如何从 crontab 轮换日志文件?

Dom*_*oSL 7 logrotate cron

我的 crontab 上有这个指令:

* * * * * /var/www/github/mysite/bin/email email worker await --pid=/var/run/mysite-worker-email.pid >> /tmp/mysite-worker-email.log
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我所有的日志都写在/tmp/mysite-worker-email.log 中,有没有办法轮换该文件?

Sve*_*ven 21

假设您在机器上拥有 root 权限。如果您使用的是共享主机,那么无论如何 SF 都是错误的站点。

检查是否/etc/logrotate.conf/etc/logrotate.d存在。如果他们这样做,添加一个文件有合适的名字,比如site_email/etc/logrotate.d与类似下面的内容:

/tmp/mysite-worker-email.log {
   compress
   daily 
   missingok
   rotate 7
}
Run Code Online (Sandbox Code Playgroud)

这将每天轮换日志文件,并保留过去 7 天的压缩副本。logrotate有更多选项,请man logrotate.conf查看所有选项。

请注意:保留日志文件/tmp是一个坏主意。将它们放入/var/log/它们所属的位置,特别是如果您想保留更多日志文件副本并且不希望它们在/tmp清理时被删除。