我需要使用 Jenkins 启用 logrotate 服务以轮换其日志文件(/var/log/jenkins/jenkins.log)。因此,我在 /etc/logrotate.d 中配置了一个具有正确权限的脚本:
/var/log/jenkins/jenkins.log {
hourly
copytruncate
missingok
rotate 8
compress
delaycompress
size 5G
}
对于每个 logrotate 脚本,权限是 644,所有者是 root。
logrotate 服务正常工作,但不适用于 Jenkins。没有日志文件被轮换!
因此,我尝试将命令直接插入到 root 的 crontab 中:
0 * * * * logrotate --force /etc/logrotate.d/jenkins
但是,即使 cron 服务根据 cron 日志每小时正常工作,此命令也根本不起作用:
cat /var/log/syslog | grep logrotate
[...]
Jun 4 09:00:01 CI-prod CRON[11794]: (root) CMD (logrotate --force /etc/logrotate.d/jenkins)
Jun 4 10:00:01 CI-prod CRON[525]: (root) CMD (logrotate --force /etc/logrotate.d/jenkins)
但是,如果我手动执行 logrotate 命令(logrotate --force /etc/logrotate.d/jenkins),它运行良好,并且 Jenkins 日志按照脚本轮换没有问题。
拜托,你能帮帮我吗?
以下是其他有用的信息:
- 操作系统:Ubuntu 16.04.1 LTS
- 詹金斯版本:2.121.2
- Java版本:1.8.0_121
crontab 环境受限,因此请尝试使用绝对路径并将命令输出重定向到文件中,这将在出现错误时为您提供帮助。