nohup 借助cronolog进行日志分割 Linux

1、安装 cronolog

  > yum install cronolog

  > whereis cronolog  //查看了一下安装位置

  cronolog: /usr/sbin/cronolog /usr/share/man/man1/cronolog.1m.gz

  发现默认装在了/usr/xxx中,记住 /usr/sbin/cronolog ,在后面的nohup命令中用到。

2、nohup运行项目

  > nohup ./logsplitTest | /usr/sbin/cronolog ./logs/log_%Y-%m-%d-%H-%M.log >> /dev/null 2>&1 &

  使用 “/usr/sbin/cronolog” 进行分割,“./logs/log_%Y-%m-%d-%H-%M.log”  表示分割后的日志存放的位置以及日志文件命名的格式,“/dev/null 2>&1” 是nohup的输出设置,其意思见下文。

 

nohup 的输出设置:  

  • /dev/null – 表示空设备文件
  • 0 – stdin (standard input,标准输入)
  • 1 – stdout (standard output,标准输出)
  • 2 – stderr (standard error,标准错误输出)
  • 2>&1  表示将标准错误 2 重定向到标准输出 &1 ,标准输出 &1 再被重定向输入到log_%Y-%m-%d-%H-%M.log 文件中。

 

cronolog 一般是采取管道的方式来工作的,采用如下的形式:

1
[root@node6 ~]# loggenerator | cronolog log_file_pattern

其中,loggenerator为产生log的程序,而log_file_pattern是日志文件的路径,可以在其中加入cronolog所支持的时间相关的pattern字符,如/www/log/%y/%m/%d/access.log。其pattern为%字符后跟一特殊字符,简述如下:

转义符:  

1
2
3
%    %字符
n    换行
t    水平制表符

时间域:  

1
2
3
4
5
6
7
H    小时(00..23)
I    小时(01..12)
p    该locale下的AM或PM标识
M    分钟(00..59)
S    秒 (00..61, which allows for leap seconds)
X    该locale下时间表示符(e.g.: "15:12:47")
Z    时区。若时区不能确定,则无意义

日期域:  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
a    该locale下的工作日简名(e.g.: Sun..Sat)
A    该locale下的工作日全名(e.g.: Sunday ..  Satur-ay)
b    该locale下的月份简称(e.g.: Jan .. Dec)
B    该locale下的月份全称(e.g.:  January .. December)
c    该locale下的日期和时间(e.g.: "Sun Dec 15  14:12:47 GMT 1996")
d    当月中的天数 (01 .. 31)
j    当年中的天数 (001 .. 366)
m    月数 (01 .. 12)
U    当年中的星期数,以周日作为一周开始,其中第一周为首个含星期天的星期(00..53)
W    当年中的星期数,以星期一作为一周的开始,其中第一周为首个含星期天的星期(00..53)
w    工作日数(0 .. 6, 0表示星期天)
x    该locale下的日期表示(e.g. "13/04/97")
y    两位数的年份(00 .. 99)
Y    四位数的年份(1970 .. 2038)

 

 

nohup参数基本含义

  • /dev/null 表示空设备文件
  • 0 表示stdin标准输入
  • 1 表示stdout标准输出
  • 2 表示stderr标准错误

  > file 表示将标准输出输出到file中,也就相当于 1>file

  2> error 表示将错误输出到error文件中

  2>&1 也就表示将错误重定向到标准输出上

  2>&1 >file :错误输出到终端,标准输出重定向到文件file,等于 > file 2>&1(标准输出重定向到文件,错误重定向到标准输出)。

  & 放在命令到结尾,表示后台运行,防止终端一直被某个进程占用,这样终端可以执行别到任务,配合 >file 2>&1可以将log保存到某个文件中,但如果终端关闭,则进程也停止运行。如 command > file.log 2>&1 & 。

  nohup放在命令的开头,表示不挂起(no hang up),也即,关闭终端或者退出某个账号,进程也继续保持运行状态,一般配合&符号一起使用。如nohup command &。

 

posted @ 2021-09-30 16:32  war3_xiaofeng  阅读(702)  评论(0编辑  收藏  举报