Logrotate

日誌輪換不輪換日誌

  • March 19, 2020

我在 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 命令的輸出是一個好習慣。

引用自:https://serverfault.com/questions/1007495