一、nohup命令解释:shell
a、语法:nohup [command] [args] [&]this
b、说明:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略全部挂断信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部,若是不指定重定向,则日志默认输出到当前目录下nohup.out文件中,spa
通常提交如 :nohup ./execute.sh & 这样日志或输出当前运行目下.nohup.out中日志
重定向: nohup ./execute.sh > /home/xxx/log.log 2>&1 & :这样日志会重定向到指定目录下code
2 、切分nohup.out,同时不让它无限增加blog
我这里用的通常提交命令:nohup ./execute.sh &,这样在当前目录就有nohup.out文件了,这时候能够想办法定时将nohup.out切分红,多个小文件,但同时又要使nohup.out不会无限增加下去(通常状况下是程序不能中断的):it
a、天天(根据须要设置时间),定时切分前一天的日志,(好比天天大概1g,那么能够么次切分100m左右),class
b、切分完后将nohup.out文件状况,保证新的输出日志会不停的继续输出到nohup.out后台
以上在shell中百度
current_date=`date -d "-1 day" "+%Y%m%d"`
split -b 65535000 -d -a 4 nohup.out ./log/log_${current_date}_ 这里使用split命令,将nouhup文件按指定大小切分(65535000b 大概60多M吧,能够自定义大小 ),并分红指定格式(-d -a 4以4位数字形式为后缀以从0000开始,具体能够百度split命令用法),最终输出格式为log_20160610_0001
cat /dev/null > nohup.out (该命令会瞬间清空nohup.out文件,后续会继续写该文件),将日志定向到/dev/null中
使用重定向输出同样能够这样,只不过换成重定向的文件名便可
将这些命令定义在一个shell文件天天定时运行便可,这样天天日志会被分红若干份,排查也方便,并且若是日志积压过大的话。能够定时删除历史的日志,保留近几天便可
总体代码以下:
this_path=$(cd `dirname $0`;pwd) cd $this_path echo $this_path current_date=`date -d "-1 day" "+%Y%m%d"` echo $current_date split -b 65535000 -d -a 4 /home/.../nohup.out /home/.../log/log_${current_date}_ cat /dev/null > nohup.out