在 logrotate 联机帮助页中,他们说:
“通常,logrotate 作为日常 cron 作业运行”。
这是否意味着 logrotate 使用 cron(或由 cron 执行)?如果是这样,这是否意味着如果我不通过 crontab 配置 cron 作业(例如),logrotate 将不起作用?
Vic*_*ong 10
您可以在没有 cron 的情况下手动运行 logrotate。
logrotate <configuration file>
Run Code Online (Sandbox Code Playgroud)
不过,如果你想运行在logrotate的计划的基础上,是的,你需要的cron。
您的包管理器应该在/etc/cron.daily/logrotate中创建一个默认计划,该计划使用默认的/etc/logrotate.conf配置运行 logrotate 。您还可以将自定义配置放在/etc/logrotate.d/ 中,因为默认配置有一行包含此目录中的所有配置。
include /etc/logrotate.d
Run Code Online (Sandbox Code Playgroud)
如果要使用自定义计划运行 logrotate,可以将 cron 作业放在/etc/cron.d/ 中。
例如,这将在每天两点钟使用 /etc/custom-logrotate.conf 配置触发 logrotate。
0 2 * * * root /usr/sbin/logrotate /etc/custom-logrotate.conf
Run Code Online (Sandbox Code Playgroud)
如果您需要有关 cron 表达式的帮助,请查看crontab guru。
小智 1
是的,正常情况下,cron 每天都会执行 logrotate。这取决于你的 Linux 发行版,但正常情况是让 cron 运行它。
您可以检查是否有文件/etc/cron.daily/logrotate 如果是这样,您的发行版使用 cron 来运行 logrotate。
如果您使用 docker,这可能会带来一些问题,目前 cron 不在容器内运行。