我在 Aws ec2 实例上运行了一个 logrotate,它试图每小时轮换 /var/log/tomcat8/ 下的日志。我在 /etc/logrotate.d/rotate_tomcat 下有以下配置:
"/var/log/tomcat8/localhost_access_log.*-*-*.txt" "/var/log/tomcat8/catalina.*-*-*.log" "/var/log/tomcat8/agent-log.*-*-*.json" "/var/log/tomcat8/ldap-query-log.*-*-*.*.json" {
copytruncate
size 1k
rotate 5
compress
missingok
create 0644 tomcat tomcat
}
当我手动运行它时,它按预期工作。但是当我将它作为 crond 运行时,它什么也没做。下面是我在 /etc/crond.d/accessLogDeletion 下的 crond 配置
*/2 * * * * root logrotate /etc/logrotate.d/rotate_tomcat
任何输入表示赞赏。
问题在于 cron 会话中的 PATH 。
您可以使用命令的完整路径进行修复:
或在 cron 脚本开始时使用 PATH env:
像上面那样记录 cron 命令的输出是一个好习惯。