如何在日志上自动旋转

yae*_*ael 2 linux performance rhel top atop

我们可以看到每天都会创建 atop 日志,并且占用大量空间

ls -l /var/log/atop/
total 1634632
-rw-r--r-- 1 root root 127992086 Aug 30 01:49 atop_20180829
-rw-r--r-- 1 root root 262277153 Aug 31 00:00 atop_20180830
-rw-r--r-- 1 root root 321592670 Sep  1 00:00 atop_20180831
-rw-r--r-- 1 root root 330041977 Sep  2 00:00 atop_20180901
-rw-r--r-- 1 root root 269040388 Sep  3 00:00 atop_20180902
-rw-r--r-- 1 root root 274807097 Sep  4 00:00 atop_20180903
-rw-r--r-- 1 root root  85426960 Sep  4 06:03 atop_20180904
-rw-r--r-- 1 root root         0 Sep  4 06:03 daily.log
Run Code Online (Sandbox Code Playgroud)

如何将 atop 日志限制为仅 5 个日志(最后 5 天)

Rui*_*iro 6

在 RH/CentOS 中atop不受logrotate.

其中/usr/share/atop/atop.daily有一个处理atop日志文件轮换的示例脚本。

该脚本作为查找行删除超过 28 天的日志,如下所示:

# delete logfiles older than four weeks
# start a child shell that activates another child shell in
# the background to avoid a zombie
#
( (sleep 3; find $LOGPATH -name 'atop_*' -mtime +28 -exec rm {} \;)& )
Run Code Online (Sandbox Code Playgroud)

您可以将该脚本复制到/etc/cron.daily并将天数更改为 5。

( (sleep 3; find $LOGPATH -name 'atop_*' -mtime +5 -exec rm {} \;)& )
Run Code Online (Sandbox Code Playgroud)

处理日常文件也可能有点不方便。使用上面的脚本,如果您不打算进行纯粹的每日轮换,您还可以编辑/etc/sysconfig/atop和更改持续时间,例如 10 分钟,如下所示:

INTERVAL=600
Run Code Online (Sandbox Code Playgroud)

作为替代方案,如果您确实想每天轮换它,您可以创建一个logrotate文件,/etc/logrotate.d/atop如下所示:

/var/log/atop/atop_20[0-9][0-9][0-9][0-9][0-9][0-9] {
    missingok
    daily
    nodateext
    rotate 5
    ifempty
    nocreate
    postrotate
      /usr/bin/find /var/log/atop/ -maxdepth 1 -mount -name atop_20\[0-9\]\[0-9\]\[0-9\]\[0-9\]\[0-9\]\[0-9\]\* -mtime +40 -exec /bin/rm {} \;
    endscript
    }
Run Code Online (Sandbox Code Playgroud)

如果做logrotate版本,需要保留日常文件,并且不要更改INTERVAL参数。