Альтернативное расположение журнала для команд в crontab

Когда мы добавим * * * * * myTask.sh 2>&1 >> /var/log/myTask.log в crontab все логи заносятся в myTask.log Тем не менее, я хочу знать, есть ли какой-нибудь способ, которым мы можем предоставить альтернативное местоположение (даже если это /dev/null) так что если по какой-либо причине местоположение недоступно (из-за удаления или разрешений), задание не должно быть затронуто.

Пожалуйста, дайте мне знать, если так или иначе мы можем сделать это.

1 ответ

Решение

Одна идея будет использовать sponge от moreutils пакет. То есть, sudo apt-get install moreutils, затем:

* * * * * myTask.sh 2>&1 | sponge /var/log/myTask.log

Губка программы поглощает все входные данные, а затем записывает их только в конце. Это означает, что файл не будет проверен на наличие разрешений или чего-либо еще, пока ваша программа не будет завершена. С другой стороны, губка будет потреблять столько памяти, сколько ей нужно для буферизации ввода, поэтому, если ваша программа много печатает, это может быть нежелательно.

Другие вопросы по тегам