Logrotate
日誌輪換不輪換日誌
我在 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 。
/bin/sh: 1: logrotate: not found
您可以使用命令的完整路徑進行修復:
*/2 * * * * root /usr/sbin/logrotate /etc/logrotate.d/rotate_tomcat >> /var/log/myCron.log 2>&1
或在 cron 腳本開始時使用 PATH env:
PATH=/usr/sbin:/usr/bin:/sbin:/bin */2 * * * * root logrotate /etc/logrotate.d/rotate_tomcat >> /var/log/myCron.log 2>&1
像上面那樣記錄 cron 命令的輸出是一個好習慣。