shell基础不扎实,写个文档记录下
- 系统时间格式化:`date +%Y%m%d%H%M%S`;
- 进到当前脚本所在目录:cd `dirname $0`;比如说在脚本目录执行返回.在上级目录执行返回./xx;
- 脚本中执行`pwd`显示的是执行该条命名时的相对位置和脚本路径无关;
- 通过source 或 . 来加载配置文件参数到当前脚本,如果使用” . "执行,则程序继承当前shell中的环境变量,同时,若在程序中改变了当前shell中的环境变量(不使用export),则当前shell中该环境变量的值也会改变,配合使用如下;
#获取当前脚本所在位置
base_path=`pwd`
#通过source 或 . 来加载配置文件参数到当前脚本
. ${base_path}/log_cut_config.sh
- chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符;
- mkdir -p :递归创建目录,即使上级目录不存在,会按目录层级自动创建目录;
- 文件比较运算符
-e filename 如果 filename存在,则为真 [ -e /var/log/syslog ]
-d filename 如果 filename为目录,则为真 [ -d /tmp/mydir ]
-f filename 如果 filename为常规文件,则为真 [ -f /usr/bin/grep ]
-L filename 如果 filename为符号链接,则为真 [ -L /usr/bin/grep ]
-r filename 如果 filename可读,则为真 [ -r /var/log/syslog ]
-w filename 如果 filename可写,则为真 [ -w /var/mytmp.txt ]
-x filename 如果 filename可执行,则为真 [ -L /usr/bin/grep ] - hostname和hostname -i的区别,前者返回的是自己起的主机名比如nn1.hadoop后者返回的是ip地址;
- ps -aux显示资源进程
- 以<< EOF作为标准输入字符,以EOF为标准输入结束
-
nohup和&的区别
& : 指在后台运行
nohup : 不挂断的运行,注意并没有后台运行的功能,,就是指,用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,例如我们断开SSH连接都不会影响他的运行,注意了nohup没有后台运行的意思;&才是后台运行
&是指在后台运行,但当用户推出(挂起)的时候,命令自动也跟着退出
那么,我们可以巧妙的吧他们结合起来用就是
nohup COMMAND &,这样就能使命令永久的在后台执行1. sh test.sh &
将sh test.sh任务放到后台 ,即使关闭xshell退出当前session依然继续运行,但标准输出和标准错误信息会丢失(缺少的日志的输出)将sh test.sh任务放到后台 ,关闭xshell,对应的任务也跟着停止。
2. nohup sh test.sh
将sh test.sh任务放到后台,关闭标准输入,终端不再能够接收任何输入(标准输入),重定向标准输出和标准错误到当前目录下的nohup.out文件,即使关闭xshell退出当前session依然继续运行。
3. nohup sh test.sh &
将sh test.sh任务放到后台,但是依然可以使用标准输入,终端能够接收任何输入,重定向标准输出和标准错误到当前目录下的nohup.out文件,即使关闭xshell退出当前session依然继续运行。 -
压缩文件 gizip /xx/xxx.log
/usr/bin/gzip ${NGINX_LOG_WORK_PATH}/${log_file_name}.log chown ${LOG_USER}:${LOG_USER} ${NGINX_LOG_WORK_PATH}/${log_file_name}.log.gz