1 | logrotate
|
2 | ===
|
3 |
|
4 | 系统日志进行轮转、压缩和删除
|
5 |
|
6 | ## 补充说明
|
7 |
|
8 | **logrotate命令** 用于对系统日志进行轮转、压缩和删除,也可以将日志发送到指定邮箱。使用logrotate指令,可让你轻松管理系统所产生的记录文件。每个记录文件都可被设置成每日,每周或每月处理,也能在文件太大时立即处理。您必须自行编辑,指定配置文件,预设的配置文件存放在`/etc/logrotate.conf`文件中。
|
9 |
|
10 | ### 语法
|
11 |
|
12 | ```shell
|
13 | logrotate(选项)(参数)
|
14 | ```
|
15 |
|
16 | ### 选项
|
17 |
|
18 | ```shell
|
19 | -?或--help:在线帮助;
|
20 | -d或--debug:详细显示指令执行过程,便于排错或了解程序执行的情况;
|
21 | -f或--force :强行启动记录文件维护操作,纵使logrotate指令认为没有需要亦然;
|
22 | -s<状态文件>或--state=<状态文件>:使用指定的状态文件;
|
23 | -v或--version:显示指令执行过程;
|
24 | -usage:显示指令基本用法。
|
25 | ```
|
26 |
|
27 | ### 参数
|
28 |
|
29 | 配置文件:指定lograote指令的配置文件。
|
30 |
|
31 | ### 实例
|
32 |
|
33 | crontab 会定时调用logrotate命令 在 `/etc/cron.daily/logrotate` 文件中配置使用
|
34 |
|
35 | logrotate的配置文件`/etc/logrotate.conf` 定义引用`/etc/logrotate.d`目录下的一些自定义的log配置
|
36 |
|
37 | 在`/etc/logrotate.d`目录下创建任意后缀名的文件,即可使用对日志进行轮转
|
38 | ```shell
|
39 | /tmp/log/log.txt
|
40 | {
|
41 | copytruncate
|
42 | daily
|
43 | rotate 30
|
44 | missingok
|
45 | ifempty
|
46 | compress
|
47 | noolddir
|
48 | }
|
49 | ```
|
50 |
|
51 | 这个配置文件代表的意思是将`/tmp/log/log.txt`文件 进行轮转压缩
|
52 |
|
53 | ```
|
54 | compress 通过gzip 压缩转储以后的日志
|
55 | nocompress 不做gzip压缩处理
|
56 | copytruncate 用于还在打开中的日志文件,把当前日志备份并截断;是先拷贝再清空的方式,拷贝和清空之间有一个时间差,可能会丢失部分日志数据。
|
57 | nocopytruncate 备份日志文件不过不截断
|
58 | create mode owner group 轮转时指定创建新文件的属性,如create 0777 nobody nobody
|
59 | nocreate 不建立新的日志文件
|
60 | delaycompress 和compress 一起使用时,转储的日志文件到下一次转储时才压缩
|
61 | nodelaycompress 覆盖 delaycompress 选项,转储同时压缩
|
62 | missingok 如果日志丢失,不报错继续滚动下一个日志
|
63 | errors address 专储时的错误信息发送到指定的Email 地址
|
64 | ifempty 即使日志文件为空文件也做轮转,这个是logrotate的缺省选项。
|
65 | notifempty 当日志文件为空时,不进行轮转
|
66 | mail address 把转储的日志文件发送到指定的E-mail 地址
|
67 | nomail 转储时不发送日志文件
|
68 | olddir directory 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
|
69 | noolddir 转储后的日志文件和当前日志文件放在同一个目录下
|
70 | sharedscripts 运行postrotate脚本,作用是在所有日志都轮转后统一执行一次脚本。如果没有配置这个,那么每个日志轮转后都会执行一次脚本
|
71 | prerotate 在logrotate转储之前需要执行的指令,例如修改文件的属性等动作;必须独立成行
|
72 | postrotate 在logrotate转储之后需要执行的指令,例如重新启动 (kill -HUP) 某个服务!必须独立成行
|
73 | daily 指定转储周期为每天
|
74 | weekly 指定转储周期为每周
|
75 | monthly 指定转储周期为每月
|
76 | rotate count 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
|
77 | dateext 使用当期日期作为命名格式
|
78 | dateformat .%s 配合dateext使用,紧跟在下一行出现,定义文件切割后的文件名,必须配合dateext使用,只支持 %Y %m %d %s 这四个参数
|
79 | size(或minsize) log-size 当日志文件到达指定的大小时才转储
|
80 | ```
|
81 | ### 注意事项
|
82 |
|
83 | 在`/etc/logrotate.d`目录下创建任意后缀名的文件
|
84 | ```shell
|
85 | /tmp/log/log*
|
86 | {
|
87 | copytruncate
|
88 | daily
|
89 | rotate 30
|
90 | missingok
|
91 | ifempty
|
92 | compress
|
93 | noolddir
|
94 | }
|
95 | ```
|
96 | 这种情况下,会将轮转过的log再重新轮转,因为轮转过后的文件名也是已log开头的
|
97 |
|
98 |
|