日志切割Logrotate

关于日志切割

logrotate程序是一个日志文件管理工具。用于分割日志文件,删除旧的日志文件,并创建新的日志文件,起到“转储”作用。
可以节省磁盘空间
配置完后,logrotate的运作完全自动化,不必进行任何进一步的人为干预。

安装Logrotate

系统版本说明

[root@CentOS ~]# uname -r
2.6.32-696.el6.x86_64
[root@CentOS ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)

安装方法

默认centos系统安装自带logrotate,安装方法如下

yum -y install logrotate crontabs 

配置文件介绍

Linux系统默认安装logrotate工具,它默认的配置文件在:

/etc/logrotate.conf
/etc/logrotate.d/

logrotate.conf 是主要的配置文件
logrotate.d 是一个目录,该目录里的所有文件都会被主动的读入/etc/logrotate.conf中执行。
另外,如果 /etc/logrotate.d/ 里面的文件中没有设定一些细节,则会以/etc/logrotate.conf这个文件的设定来作为默认值。

[root@CentOS ~]# rpm -ql logrotate
/etc/cron.daily/logrotate
/etc/logrotate.conf   ## 主配置文件
/etc/logrotate.d      # 配置目录
/usr/sbin/logrotate
/usr/share/doc/logrotate-3.7.8
/usr/share/doc/logrotate-3.7.8/CHANGES
/usr/share/doc/logrotate-3.7.8/COPYING
/usr/share/man/man5/logrotate.conf.5.gz
/usr/share/man/man8/logrotate.8.gz
/var/lib/logrotate.status

配置Logrotate

测试Logrotate管理日志

创建日志,然后填入一个10MB的随机比特流数据文件

[root@CentOS ~]# touch /var/log/ceshi-log
[root@CentOS ~]# ll /var/log/ceshi-log
-rw-r--r-- 1 root root 0 Nov 13 08:45 /var/log/ceshi-log
[root@CentOS ~]# head -c 10M < /dev/urandom > /var/log/ceshi-log
[root@CentOS ~]# ll /var/log/ceshi-log
-rw-r--r-- 1 root root 10485760 Nov 13 08:46 /var/log/ceshi-log

创建一个配置文件

配置logrotate来轮循该日志文件
此处模板是通用的,配置参数则根据实际需求进行调整,不是所有的参数都是必要的。
当然也可以通过man手册中的例子进行配置。

[root@CentOS ~]# vim /etc/logrotate.d/ceshi-log
/var/log/ceshi-log {
    monthly
    rotate 5
    compress
    delaycompress
    missingok
    notifempty
    create 644 root root
    postrotate
        /usr/bin/killall -HUP rsyslogd
    endscript
}

配置参数详解

配置参数 说明
monthly 日志文件将按月轮循。其它可用值为'daily','weekly'或者'yearly'。
rotate 5 一次将存储5个归档日志。对于第六个归档,时间最久的归档将被删除。
compress 在轮循任务完成后,已轮循的归档将使用gzip进行压缩。
delaycompress 总是与compress选项一起用,delaycompress选项指示logrotate不要将最近的归档压缩,压缩将在下一次轮循周期进行。这在你或任何软件仍然需要读取最新归档时很有用。
missingok 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。
notifempty 如果日志文件为空,轮循不会进行。
create 644 root root 以指定的权限创建全新的日志文件,同时logrotate也会重命名原始日志文件。
postrotate/endscript 在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行。在这种情况下,rsyslogd 进程将立即再次读取其配置并继续运行。

以上信息来源 "man logrotate"

手动运行Logrotate

logrotate可以在任何时候从命令行手动调用。要调用为/etc/lograte.d/下配置的所有日志调用logrotate:
logrotate可以在任何时候从命令行手动调用。要调用为/etc/lograte.d/下配置的所有日志调用logrotate:

[root@CentOS ~]# logrotate /etc/logrotate.conf

为特定的配置调用logrotate,执行一次切割任务测试
-f选项来强制logrotate轮循日志文件
-v参数提供了详细的输出

[root@CentOS ~]# ll /var/log/ceshi-log
-rw-r--r-- 1 root root 0 Nov 13 09:01 /var/log/ceshi-log
[root@CentOS ~]# logrotate -vf /etc/logrotate.d/ceshi-log
[root@CentOS ~]# ll /var/log/ceshi-log
ceshi-log    ceshi-log.1

Logrotate的记录日志

logrotate的日志一般存放于/var/lib/logrotate/status目录下。如果我们想要logrotate记录到指定的文件,可以从命令行指定。

[root@CentOS ~]# logrotate -vf -s /var/lib/logrotate.status /etc/logrotate.d/ceshi-log
reading config file /etc/logrotate.d/ceshi-log
reading config info for /var/log/ceshi-log 

Handling 1 logs

rotating pattern: /var/log/ceshi-log  forced from command line (5 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/ceshi-log
  log does not need rotating
not running postrotate script, since no logs were rotated

Logrotate定时任务

logrotate的定时任务在安装时就自动创建了

[root@CentOS ~]# cat /etc/cron.daily/logrotate
#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi

Logrotate生产应用

为nginx设置日志切割
防止访问日志文件过大

[root@CentOS ~]# cat /etc/logrotate.d/nginx
/var/log/nginx/*log {
    daily
    rotate 10
    missingok
    notifempty
    compress
    sharedscripts
    postrotate
        /bin/kill -USR1 $(cat /var/run/nginx.pid 2>/dev/null) 2>/dev/null || :
    endscript
}

Logrotate日志切割的更多相关文章

  1. Centos7 logrotate日志切割

    https://www.cnblogs.com/kevingrace/p/6307298.html 在当前目录下 vim  *****  文件 需要切的日志  /home/soft/app/logs/ ...

  2. logrotate 日志切割

    logrotate是一个日志文件管理工具.用于分割日志文件,删除旧的日志文件,并创建新的日志文件,起到"转储"作用. 配置文件 Linux系统默认安装logrotate工具,它默认 ...

  3. logrotate 日志切割工具

    相关原理参见:https://www.cnblogs.com/sailrancho/p/4784763.html 一.相关目录: 程序:/usr/sbin/logrotate配置:/etc/logro ...

  4. nginx日志切割(logrotate或shell脚本)

    nginx自己不会对日志文件进行切割,可以通过两种不同的方式进行,分别是:通过logrotate和通过shell脚本. 如果是yum方式安装的nginx,系统默认会自动通过logrotate这个日志管 ...

  5. 日志切割之Logrotate

    1.关于日志切割 日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到.对于忙碌的服务器,日志文件大小会增长极快,服务器会很快消耗磁盘空间,这成了个问题.除此之外,处 ...

  6. 日志切割工具logrotate解决Tomcat catalina.out日志过大的问题

    一.介绍日志切割logrotate 对于Linux系统安全来说,日志文件是极其重要的工具.不知为何,我发现很多运维同学的服务器上都运行着一些诸如每天切分Nginx日志之类的CRON脚本,大家似乎遗忘了 ...

  7. 运维中的日志切割操作梳理(Logrotate/python/shell脚本实现)

    对于Linux系统安全来说,日志文件是极其重要的工具.不知为何,我发现很多运维同学的服务器上都运行着一些诸如每天切分Nginx日志之类的CRON脚本,大家似乎遗忘了Logrotate,争相发明自己的轮 ...

  8. 运维中的日志切割操作梳理(Logrotate/python/shell脚本实现)(转)

    对于Linux系统安全来说,日志文件是极其重要的工具.不知为何,我发现很多运维同学的服务器上都运行着一些诸如每天切分Nginx日志之类的CRON脚本,大家似乎遗忘了Logrotate,争相发明自己的轮 ...

  9. tomcat catalina.out日志切割(logrotate)

    简单说明: 1,因为tomcat日志会一直往catalina.out里面输出,所以回到值catalina.out非常大,占用磁盘空间 2,日志非常大,查看日志就需要很长时间. 3,据说catalina ...

随机推荐

  1. HDU3549 最大流 裸题

    EK算法 时间复杂度o(n*m*m)  因为有反向边每次bfs时间为 n*m 每次删一条边 最多m次 代码 #include<iostream> #include<string.h& ...

  2. git修改commit message及vi编辑器的简单使用

    1.修改commit信息 git commit --amend 2.进入vi编辑器修改 ‘i’进入insert模式,输入文字: ‘esc’回到命令模式,删除文字,移动光标: ‘:’进入底行模式,‘wq ...

  3. [Poj1185][Noi2001]炮兵阵地(状压dp)

    炮兵阵地 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 29476   Accepted: 11411 Descriptio ...

  4. Vue基础学习

    使用vue-cli构建初始化vue项目 vue init webpack myfirst 项目截图:(开发工具:webStorm) 主要练习了vue的基本指令:v-bind.v-if.v-show.v ...

  5. grep使用正则表达式搜索IP地址

    递归搜索当前目录及其子目录.子目录的子目录……所包含文件是否包含IP地址 grep -r "[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\.[[:digit: ...

  6. c++之虚基类初始化

    C++虚基类构造函数下面文章详细介绍C++虚基,所谓C++虚基类:是由最派生类的构造函数通过调用虚基类的构造函数进行初始化的,但前提是要深入理解到底什么是C++虚基类,及他是怎么运行的. 前面讲过,为 ...

  7. protobuf 一个c++示例

    http://wangjunle23.blog.163.com/blog/static/11783817120126155282640/     1.在.proto文件中定义消息格式 2.使用prot ...

  8. Windows环境下QWT安装及配置

    ** 1.QWT下载路径 **:https://sourceforge.net/projects/qwt/ 主要下载这三个文件:qwt-6.1.2.zip.qwt-6.1.2.pdf,qwt-6.1. ...

  9. iOS用户体验之-modal上下文

    iOS用户体验之-modal上下文 何为模态视图,它的作用时聚焦当前.获得用户的注意,用户仅仅有完毕模态的任务才 退出模态视图.否则你将不能运行app的任务,比如,alert view,model v ...

  10. EditText设置光标位置问题

    普通设置 EditText 光标显示位置的方法就是 et.setSelection(text.length()); et.setSelection(0); 设置0 就是第一位了. 设置text长度就最 ...