我正在尝试使用 cron 删除容器中的日志文件:
$ crontab -e
# I add this line to file, must execute each 10 minutes
10 * * * * docker exec -it explorer.org1.company.fr sh -c 'rm /opt/logs/app/app.log-*'
当我使用以下方法检查 cron 日志时
grep CRON /var/log/syslog
我得到:
Jan 22 09:10:01 ip-172-31-46-123 CRON[4029]: (ubuntu) CMD (docker exec -it explorer.org1.company.fr sh -c 'rm /opt/logs/app/app.log-*')
这似乎表明 cron 命令已触发。
但是当我使用以下命令检查文件时:
docker exec -it explorer.org1.company.fr sh -c 'ls /opt/logs/app'
文件尚未被删除。
如果我手动执行该命令,它将删除这 2 个文件,因此它确认命令正在运行。
为什么使用 cron 运行时命令无效???
答案1
也许 docker 不在 cron 的 $PATH 中?请注意,cron 设置了自己的 $PATH 变量。cron 只会告诉 cronjob 是否已执行,而不会告诉您是否找到了命令。(但您在失败时收到的状态邮件会告诉它)。
也有一个失败
# I add this line to file, must execute each 10 minutes
10 ...
它应该是
*/10