crontab не может записывать журналы

I Я использую crontab для запуска скрипта Python каждую минуту. Мой файл crontab выглядит так:

*/1 * * * *  source /root/.bashrc && source /home/env/bin/activate && python /home/manage.py shell < /home/script.py  >> /var/log/navjob.log 2>&1

Когда я пытаюсь проверить вывод cron в системном журнале с помощью этой команды #grep CRON / var / log / syslog , результат будет таким:

...CRON[764888]: (root) CMD (source /root/.bashrc && source /home/env/bin/activate && python /home/manage.py shell < /home/script.py  >> /var/log/navjob.log 2>&1)
...CRON[764887]: (CRON) info (No MTA installed, discarding output)

Но файл журнала (/var/log/navjob.log) пуст и код не запускается!

0
задан 31 July 2021 в 12:21

1 ответ

Когда вы объединяете команды в цепочку и добавляете перенаправление вроде

cmd1 && cmd2 && cmd3 >> somefile 2>&1

(или cmd1; cmd2; cmd3 >> somefile 2> & 1 и т. Д.), Перенаправления применяются только к последней команде в цепочке. Чтобы перенаправить их все, вам необходимо сгруппировать команды типа

{ cmd1 && cmd2 && cmd3 ; } >> somefile 2>&1

или (с подоболочкой)

( cmd1 && cmd2 && cmd3 ) >> somefile 2>&1

. В этом случае ваше задание cron, скорее всего, завершается ошибкой при самой первой команде source , поскольку source - это bashism, а оболочка cron по умолчанию - / bin / sh - либо добавьте SHELL = / bin / bash перед записью crontab, либо измените source в POSIX .

2
ответ дан 20 August 2021 в 10:30

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

Похожие вопросы: