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