У меня есть logrotate, работающий на экземпляре Aws ec2, который пытается ротации журналов в / 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, он ничего не делает. Ниже моя конфигурация crond в /etc/crond.d/accessLogDeletion
*/2 * * * * root logrotate /etc/logrotate.d/rotate_tomcat
Любые входы приветствуются.
Проблема связана с PATH в сеансе cron.
/bin/sh: 1: logrotate: not found
Вы можете исправить, указав полный путь к команде:
*/2 * * * * root /usr/sbin/logrotate /etc/logrotate.d/rotate_tomcat >> /var/log/myCron.log 2>&1
или с PATH env в начале скрипта cron:
PATH=/usr/sbin:/usr/bin:/sbin:/bin
*/2 * * * * root logrotate /etc/logrotate.d/rotate_tomcat >> /var/log/myCron.log 2>&1
Рекомендуется регистрировать вывод команд cron, как указано выше.