Я пытаюсь удалить файл журналов в контейнере с кроном:
$ 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-*'
Когда я проверяю, что крон регистрируется с
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-*')
Который, кажется, указывает на ту инициированную команду крона.
Но когда я проверяю файлы с:
docker exec -it explorer.org1.company.fr sh -c 'ls /opt/logs/app'
файлы не были удалены.
Если я выполню команду вручную, то она удалит эти 2 файла, таким образом, она подтвердит, что команда работает.
Почему команда не является эффективной при выполнении с кроном???
возможно, докер не находится в $PATH кронов? Обратите внимание, что крон устанавливает свой собственный var $PATH. Просто тот крон говорит, что cronjob выполняется, он не говорит Вам, если команда была найдена. (Но почта состояния, которую Вы получили бы при отказе, скажет его).
также существует отказ в
# I add this line to file, must execute each 10 minutes
10 ...
это должно быть
*/10
После установки Postfix
/ Mutt
, Я мог получить сообщение об ошибке:
the input device is not a TTY
Это обсуждено здесь
Удаление -it
после docker exec
добился цели!
Спасибо за помощь!