日志旋转不会旋转日志

日志旋转不会旋转日志

我在 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

任何意见都值得赞赏。

答案1

问题出在 cron 会话中的 PATH 上。

/bin/sh: 1: logrotate: not found

您可以使用命令的完整路径进行修复:

*/2 * * * * root /usr/sbin/logrotate /etc/logrotate.d/rotate_tomcat >> /var/log/myCron.log  2>&1

或者在 cron 脚本开始时使用 PATH 环境:

PATH=/usr/sbin:/usr/bin:/sbin:/bin

*/2 * * * * root logrotate /etc/logrotate.d/rotate_tomcat >> /var/log/myCron.log  2>&1

像上面那样记录 cron 命令的输出是一种很好的做法。

相关内容