当我们登录Linux shell时,shell会执行一系列初始化动作,其中就包括读取配置文件,然后根据配置文件来设置环境信息。事实上,在登录shell时会读取两个配置文件:/etc/profile和用户目录下的配置文件(以.开头的隐藏文件 .bash_profile ),那他们之间的关系怎样呢?用户目录下还有哪些配置文件呢?今天我就给你一一道来。 说明 1、/etc/profile --- 为系统的每个用户设置环境信息,对所有用户的登录shell都有效(全局配置文件)。此文件中设定的变量(全局)可以作用于任何用户,而.bash_profile和.bashrc中设定的变量(局部)只能作用于当前登录用户。/etc/profile和.bash_profile、.bashrc的关系类似于父子关系,具有继承特性。 2、.bash_profile --- 为当前用户设置环境信息,仅对当前用户的登录shell有效(局部配置文件)。 3、.bashrc --- .bash_profile只被登录shell读取并仅仅执行一次,如果在命令行上键入bash启动一个新的shell,这个....
一、编辑 /etc/rc.d/rc.local 文件 在linux各项服务启动完毕之后,会运行/etc/rc.d/rc.local这个文件,所以把我们需要运行的脚本放在这里面就行了。 (ps:/etc/rc.local和/etc/rc.d/rc.local是同一个文件,软链接而已) # cat /mnt/Autorun_script.sh date > /tmp/bootup.txt hostname >> /tmp/bootup.txt echo whoami >> /tmp/bootup.txt 将/mnt/Autorun_script.sh这个脚本放到/etc/rc.d/rc.local这个文件最后一行 最后为了保险起见,别忘了加一个权限 chmod +x /mnt/Autorun_script.sh chmod +x /etc/rc.d/rc.local 重启效果见下 二、crontab计划任务 可以自己设置时间,下面介绍另一个特殊的任务,叫@reboot,重启之后自动运行脚本。 效果见下 三、使用systemd,自己写个服务就ok了 上面....
#!/bin/bash #这里可替换为你自己的执行程序,其他代码无需更改 APP_NAME=*.jar logname=date +%Y%m%d_%H%M%S"_start.log" #使用说明,用来提示输入参数 usage() { echo "Usage: sh 执行脚本.sh [start|stop|restart|status]" start exit 1 } #检查程序是否在运行 is_exist(){ pid=ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' #如果不存在返回1,存在返回0 if [ -z "${pid}" ]; then return 1 else return 0 fi } #启动方法 start(){ is_exist if [ $? -eq "0" ]; then echo "${APP_NAME} is already running. pid=${pid} ." else nohup java -jar $APP_NAME > ./$logname 2>&1 &am.....
#!/bin/expect echo "Hello World !" set timeout 30 spawn ssh 112.126.100.212 expect "password:" send "Yingfeng!@#azq%&" spawn sleep 10 interact exit
Linux驱动实践带你一步一步编译内核驱动程序.pdf
在没什么好用的终端时SSH免密登陆就非常重要了 进入控制台,生成RSA密钥 ssh-keygen -t rsa 将生成的公钥上传到服务器 scp id_rsa.pub root@8.8.8.8:/root/id_rsa.pub 安装openssh-server yum install openssh-server 或 apt install openssh-server 导入生成的公钥到授权文件 需要进入.ssh 文件夹下 cat /root/id_rsa.pub >> authorized_keys 完成 退出进一下试试
查看哪些是开机自启动服务 可以通过chkconfig 命令查看 [root@linux30 ~]# chkconfig 注:该输出结果只显示 SysV 服务,并不包含 原生 systemd 服务。SysV 配置数据 可能被原生 systemd 配置覆盖。 要列出 systemd 服务,请执行 'systemctl list-unit-files'。 查看在具体 target 启用的服务请执行 'systemctl list-dependencies [target]'。 netconsole 0:关 1:关 2:关 3:关 4:关 5:关 6:关 network 0:关 1:关 2:开 3:开 4:开 5:开 6:关 [root@linux30 ~]# 如果是原生 systemd 服务,则可以使用** **systemctl list-unit-files命令查看 [root@linux30 tidb]# systemctl list-unit-files UNIT FILE STATE proc-sys-fs-binfmt_misc.automount static dev-hug.....
进程 程序是指储存在外部存储(如硬盘)的一个可执行文件, 而进程是指处于执行期间的程序, 进程包括 代码段(text section) 和 数据段(data section), 除了代码段和数据段外, 进程一般还包含打开的文件, 要处理的信号和CPU上下文等等. 进程描述符 Linux进程使用 struct task_struct 来描述(include/linux/sched.h), 如下: struct task_struct { /* * offsets of these are hardcoded elsewhere - touch with care / volatile long state; / -1 unrunnable, 0 runnable, >0 stopped / unsigned long flags; / per process flags, defined below / int sigpending; mm_segment_t addr_limit; / thread address space: 0-0xBFFFFFFF for us....
新装的一个ubuntu 系统每次登陆后都得 手动加载home下的配置文件,时间久了就很烦!.bashrc的加载时靠.profile文件加载的,检查是否确实该文件 在 /etc/profile文件内容如下: # ~/.profile: executed by the command interpreter for login shells. # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login # exists. # see /usr/share/doc/bash/examples/startup-files for examples. # the files are located in the bash-doc package. # the default umask is set in /etc/profile; for setting the umask # for ssh logins, install and configure the libpam-umask package. #um....
在使用mac系统时总会遇到一些奇奇怪怪的问题,本篇列举一下并附上解决方法 文件夹混淆成文件 这个比较坑 通过Java不小心将一个mp4文件变成了文件夹,结果文件还在文件夹下面。 解决方法把文件复制出来,再改名 生成一些多余的配置 复制到Windows下时这些缓存文件就显现出来了,如果手都删的话得累死 当你从MAC拷贝一些文件到WINDOWS时,拷贝完成后,在WINDOWS文件夹里你经常会看到很多与文件名同名,但以"._"开头的伴随文件,比如: document1.doc (主文件) ._document1.doc (伴随文件) 具体这些”._“开头的伴随文件是怎么回事,请参考What are the weird files that start with … - Apple Community,如果这些主文件后续只在WINDOWS里使用而不会再复制到MAC里使用,你可以将他们的伴随文件删除,否则请保留伴随文件,并在复制到MAC时一并复制过去。这些伴随文件里有MAC系统需要的主文件的描述信息和一些其他信息。 win 下面是一个我使用的通过WINDOWS命令行批量删除这些文件的比较简单的办....
今天在配置设备多网卡时遇到一个奇怪的警告⚠️,因为不知道对不对所以出了错赶紧百度一下,索性Wi-Fi是连好了。 大体意思是,你这个地址的密钥和你之前链接的对不起来,删了再从新配之类的(我猜的。。)。原因是前一天这个IP地址是分给另台设备A的,今天A不在线分给了B结果两台设备密钥对不上导致的。解决办法⬇️ ssh-keygen -R XX.XX.XX.XX 之后再链接就没事了。
如果想让你的 Ubuntu 或者 Debian 系统保持更新,要用 sudo apt update 和 sudo apt upgrade 命令组合。一些以前的教程也会提到 sudo apt-get update 和 sudo apt-get upgrade。apt 和 apt-get 命令运行起来几乎一样,除了一些细微的差别,后面我会讨论。我们首先讨论一下 update 和 upgrade 的区别。这两个难道不是一样的吗? apt 的 update 和 upgrade 的区别 尽管听上去运行 apt update 可以给你一个包的最新版本,然而这并不正确。update 命令只会获得系统上所有包的最新信息,并不会下载或者安装任何一个包。而是 apt upgrade 命令来把这些包下载和升级到最新版本。 还是有点困惑?让我来接着解释。我建议阅读 包管理器的概念。这个会帮你更好的理解这些东西。 Linux Package Manager Explanation 基本上,你的系统围绕着一个所有可用包的数据库(缓存)工作。注意,这个缓存(或者数据库)并不包含这些包本身,仅仅是关于包的元数据(版本....
基于 Linux 内核的操作系统系统不能说随处可见也是走进了我们千家万户,大到服务器小到路由器或者闹钟。会使用Linux命令便成了程序员或运维的必备技能。 查看系统版本 查看系统是不是64位 1、getconf LONG_BIT 查看 如下例子所示: 32位Linux系统显示32, 64位Linux系统显示64。最简单、快捷的方法。 root@orangepizero2:~/solo# root@orangepizero2:~/solo# getconf LONG_BIT 64 root@orangepizero2:~/solo# 2、uname命令查看 如下例子所示,x86_64表示64位系统, i686 i386表示32位系统。i686 只是i386的一个子集,支持的cpu从Pentium 2 (686)开始,之前的型号不支持. root@orangepizero2:~/solo# uname -a Linux orangepizero2 5.16.17-sun50iw9 #3.0.6 SMP Tue Aug 9 13:51:16 CST 2022 aarch64 aarch64 ....
简介 在我们渗透测试的过程中,通常会需要向目标主机传送一些文件,来达到提权,维持控制等目的。因此当不方便进行直接传输时,同时目标主机是能有网络连接的,那么此时就可以通过本地下载这种方法来达到文件传输的目的。此篇文章,我会对互联网上针对 win 与 linux 大部分的下载指令来做一个汇总,可能会有疏漏,但汇总的都是经常会用的。 2. Linux 2.1 Wget 这款工具功能很丰富,可以充当某种功能完备的 GUI 下载管理器,它拥有一款理想的下载管理器所需要的所有功能,比如它可以恢复下载,可以下载多个文件,出现某个连接问题后,可以重新尝试下载,你甚至可以管理最大的下载带宽。 直接下载: wget http://www.sample-videos.com/video/mp4/big.mp4 后台下载: wget -b http://www.sample-videos.com/video/mp4/big.mp4 如果互联网连接出现中断,恢复下载: wget -c http://www.sample-videos.com/video/mp4/big.mp4 从某个密码保护的 ft....
设置行号 两种:一种是设置配置文件 .nanorc set linenumbers 另一种是 nano -c [filename] 或者使用nano时用于显示当前行号的键盘组合是CTRL+C 后两种我测试的都不管用。。可能是mac电脑的问题
1、nginx安装 略,不要忘记安装ssl模块 2、ssl证书生成 生成key openssl genrsa -out server.key 1024 根据私钥生成证书申请,创建签名请求的证书(CSR)注意 ch那边必须写 openssl req -new -key server.key -out server.csr You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. -----.....
ifconfig |grep -i "3c:22:fb:3f:9d:89" -A 4 -B 1 sudo airport -s sudo airport en0 sniff 13 sudo aircrack-ng /tmp/airportSniffn9lEJ1.cap aircrack-ng -w /usr/ccdir/pass/test.txt -b 42:C8:9A:E4:4A:69 /usr/ccdir/target_test-01.cap
echo命令介绍 功能说明:显示文字。 语 法:echo [-ne][字符串] / echo [--help][--version] 补充说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。 参 数: -n 不要在最后自动换行 -e 打开反斜杠ESC转义。若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出: \a 发出警告声; \b 删除前一个字符; \c 最后不加上换行符号; \f 换行但光标仍旧停留在原来的位置; \n 换行且光标移至行首; \r 光标移至行首,但不换行; \t 插入tab; \v 与\f相同; \ 插入\字符; \nnn 插入nnn(八进制)所代表的ASCII字符; -E 取消反斜杠ESC转义 (默认) -help 显示帮助 -version 显示版本信息 ############################################################ echo输出颜色文本 echo命令改变样式,以输出不同颜色的文本,必须有 -e 选项(开启echo中的转义)。 文本终端的....
shell脚本有一些 特殊变量 ,这些特殊变量以$开头,这些变量是shell脚本一开始执行就存在了,而且用户一般不能修改这些变量,这些变量一般是只读的。例举如下: 变量名称含义 $0当前脚本的名称 $n脚本调用的参数,n只能取1~9,如果n>10,可以使用shift变量往前移动一格 $*程序的所有变量数组 参见 shell变量 $*与 $@的区别 $@程序的所有变量数组 参见 shell变量 $*与 $@的区别 $#程序的变量个数 $$当前运行脚本的PID $!执行上一个后台程序的PID $?执行上一条语句的返回值,在unix系统 :0 表示成功,否则失败 如何判断上一个命令是否执行成功了,就是用符号“$?”来显示上一条命令执行的返回值,如果为:0则代表执行成功,其它值表示失败。(这是unix系统进程返回值的约定) true echo $? false echo $? test 'abc' == 'abc' echo $? test 'abc' == 'acb' echo $? name = 'Tom' test -n $name echo $? test -d /usr/bin....
代码如下: let i+=1 ((i++)) i=$[$i+1] #注意这里为方括号 i=$(( $i + 1 )) i=expr $i + 1 #注意 加号2边要有空格 要用反向单引号Tab 键上面的那个 测试了一下都可用,例子如下: #!/bin/sh a=0 b=0 c=0 d=0 i=0 for num in $(seq 1 99); do echo ">>> ${num}" ((a++)) echo "a=${a}" b=$[b+1] echo "b=${b}" c=$(( $c + 1 )) echo "c=${c}" d=expr $d + 1 echo "d=${d}" let i+=1 echo "i=${i}" echo ">>> ${num}" echo done echo "a=${a}" echo "b=${b}" echo "c=${c}" echo "d=${d}" echo "i=${i}"