• 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 &。

  • 相关阅读:
    windows下添加多个git仓库账号
    向多个git仓库提交
    (原+转)C++中的lambda表达式
    (原)使用vectot的.end()报错:iterators incompatible
    (原)使用opencv的warpAffine函数对图像进行旋转
    (原)VS2013在Release情况下使用vector有时候会崩溃的一个可能原因
    (原)Understand中查看函数调用关系
    (原+转)Ubuntu下安装understand及在启动器中增加快捷方式
    (原)测试intel的并行计算pafor
    (原)C++中测试代码执行时间
  • 原文地址:https://www.cnblogs.com/leeke/p/15357396.html
Copyright © 2020-2023  润新知