有效管理日志文件是Linux sysadmin的一项基本任务。
在本文中,让我们讨论如何使用UNIX执行以下日志文件操作 对数旋转 效用。
- 当文件大小达到特定大小时旋转日志文件
- 旋转旧日志文件后,继续将日志信息写入新创建的文件
- 压缩旋转的日志文件
- 为旋转的日志文件指定压缩选项
- 旋转带有文件名中日期的旧日志文件
- 日志轮换后立即执行自定义外壳程序脚本
- 删除较旧的循环日志文件
1. Logrotate配置文件
以下是您应注意的一些关键文件,以使logrotate正常工作。
/ usr / sbin / 对数旋转 –logrotate命令本身。
/etc/cron.daily/logrotate –此Shell脚本每天执行一次logrotate命令。
$ cat /etc/cron.daily/logrotate #!/bin/sh /usr/sbin/logrotate /etc/logrotate.conf EXITVALUE=$? if [ $EXITVALUE != 0 ]; then /usr/bin/logger -t 对数旋转 "ALERT exited abnormally with [$EXITVALUE]" fi exit 0
/etc/logrotate.conf –在此文件中指定了所有日志文件的日志轮转配置。
$ cat /etc/logrotate.conf weekly rotate 4 create include /etc/logrotate.d /var/log/wtmp { 每月一次 minsize 1M 创建 0664 root utmp rotate 1 }
/etc/logrotate.d –在系统上安装各个软件包后,它们会将日志轮换配置信息放置在此目录中。例如,yum日志轮换配置信息如下所示。
$ cat /etc/logrotate.d/yum /var/log/yum.log { Missingok notifempty size 30k 每年 创建0600根根 }
2. Logrotate size选项:当文件大小达到特定限制时,旋转日志文件
如果要每隔1KB旋转一个日志文件(例如,/ tmp / 输出日志),请如下所示创建logrotate.conf。
$ cat 对数旋转.conf /tmp/output.log { size 1k 创建700 bala bala 旋转4 }
此logrotate配置具有以下三个选项:
- size 1k –仅在文件大小等于(或大于)此大小时运行logrotate。
- 创建–旋转原始文件,并以指定的权限,用户和组创建新文件。
- 旋转–限制日志文件的旋转次数。因此,这将仅保留最近的4个循环日志文件。
在logrotation之前,以下是output.log的大小:
$ ls -l /tmp/output.log -rw-r--r-- 1 bala bala 25868 2010-06-09 21:19 /tmp/output.log
现在,运行logrotate命令,如下所示。选项-s指定用于写入logrotate状态的文件名。
$ 对数旋转 -s /var/log/logstatus 对数旋转.conf
注意:每当需要某些文件的日志轮换时,请准备logrotate配置并手动运行logroate命令。
对数旋转后,以下是output.log的大小:
$ ls -l /tmp/output* -rw-r--r-- 1 bala bala 25868 2010-06-09 21:20 输出日志.1 -rwx------ 1 bala bala 0 2010-06-09 21:20 输出日志
最终,这将继续遵循旋转日志文件的设置。
- 输出日志4。
- 输出日志.3
- 输出日志.2
- 输出日志.1
- 输出日志
请记住,日志轮换后,与该服务相对应的日志文件仍将指向轮换文件(output.log.1)并继续写入。如果要轮换日志文件,则可以使用上述方法。 阿帕奇 access_log或error_log 每5 MB。
理想情况下,您应该修改/etc/logrotate.conf以指定特定日志文件的logrotate信息。
另外,如果您有大量的日志文件,则可以使用: 在Unix中查看巨大日志文件的10个很棒的示例
3. Logrotate 复制截断 option: Continue to write the log 信息rmation in the newly 创建d file after rotating the old log file.
$ cat 对数旋转.conf /tmp/output.log { size 1k 复制截断 旋转4 }
复制截断 instruct 对数旋转 to 创建s the copy of the original file (i.e rotate the original log file) and truncates the original file to zero 通过te size. 这个 helps the respective service that belongs to that log file can write to the proper file.
在处理日志文件时,您可能会发现 sed替代品, sed删除 提示很有帮助。
4. Logrotate 压缩选项:压缩旋转的日志文件
如果您使用如下所示的compress选项,则旋转的文件将使用gzip实用程序进行压缩。
$ cat 对数旋转.conf /tmp/output.log { size 1k 复制截断 创建700 bala bala 旋转4 压缩 }
压缩日志文件的输出:
$ ls /tmp/output* output.log.1.gz 输出日志
5. Logrotate dateext选项:使用日志文件名中的日期旋转旧的日志文件
$ cat 对数旋转.conf /tmp/output.log { size 1k 复制截断 创建700 bala bala dateext 旋转4 压缩 }
完成上述配置后,您’如下所示,您将在轮换的日志文件中注意到日期。
$ ls -lrt /tmp/output* -rw-r--r-- 1 bala bala 8980 2010-06-09 22:10 输出日志-20100609.gz -rwxrwxrwx 1 bala bala 0 2010-06-09 22:11 输出日志
每天只能工作一次。因为当它尝试在同一天的下一次旋转时,较早旋转的文件将具有相同的文件名。因此,在同一天第一次运行后,logrotate将不会成功。
通常,您可以使用tail -f实时查看日志文件的输出。你甚至可以 结合多个tail -f输出 并显示在单个终端上。
6.每月,每天,每周Logrotate选项:每周/每天/每月旋转日志文件
要每月轮换一次,
$ cat 对数旋转.conf /tmp/output.log { 每月一次 复制截断 旋转4 压缩 }
如下所示添加每周关键字,以进行每周日志轮换。
$ cat 对数旋转.conf /tmp/output.log { weekly 复制截断 旋转4 压缩 }
每天为日志循环添加如下所示的Daily关键字。您还可以每小时轮换日志。
$ cat 对数旋转.conf /tmp/output.log { 日常 复制截断 旋转4 压缩 }
7. Logrotate 后旋转 尾标选项:日志轮换后立即运行自定义shell脚本
Logrotate允许您在完成日志文件轮换后运行自己的自定义外壳程序脚本。以下配置表明它将在logrotation之后执行myscript.sh。
$ cat 对数旋转.conf /tmp/output.log { size 1k 复制截断 旋转4 压缩 后旋转 /home/bala/myscript.sh 尾标 }
8. Logrotate maxage选项:删除旧的旋转日志文件
在特定的天数后,Logrotate会自动删除旋转的文件。以下示例表明,轮播的日志文件将在100天后删除。
$ cat 对数旋转.conf /tmp/output.log { size 1k 复制截断 旋转4 压缩 maxage 100 }
9. Logrotate Missingok选项:如果缺少日志文件,则不返回错误
当实际文件不可用时,可以使用此选项忽略错误消息,如下所示。
$ cat 对数旋转.conf /tmp/output.log { size 1k 复制截断 旋转4 压缩 Missingok }
10. Logrotate 压缩cmd和compressext选项:为日志文件旋转指定压缩命令
$ cat 对数旋转.conf /tmp/output.log { size 1k 复制截断 创建 压缩 压缩命令/bin/bzip2 压缩ext .bz2 旋转4 }
上面指定了以下压缩选项:
- 压缩–指示应进行压缩。
- 压缩命令–指定应使用哪种类型的压缩命令。例如:/ bin / bzip2
- 压缩扩展–在旋转的日志文件上指定扩展名。如果没有此选项,则旋转文件的默认扩展名为.gz。因此,如果您使用bzip2 压缩ioncmd,则将扩展名指定为.bz2,如上例所示。
如果您喜欢这篇文章,您可能还会喜欢..
![]() |
![]() |
![]() |
![]() |
如果我’我没弄错示例中的权限将是由于“create 644” not “create 700”。 700将产生-rwx—— not -rw-r–r–如图所示,除非我’ve missed something.