Я создал скрипт Python, который я хочу запускать ежедневно через cronjob на сервере Ubuntu.
Вот как этот скрипт будет запускаться из командной строки:
python /home/username/public_html/IDM_app/manage.py cleanUpPosts
При вызове из CLI скрипт работает нормально.
Однако, когда я пытаюсь запустить скрипт через cronjob, скрипт не запускается должным образом.
Файлы журнала показывают, что скрипт запрашивается, но не показывают, почему скрипт не выполняется должным образом.
Я добавил логирование Python в скрипт. Когда скрипт вызывается из CLI, запись в журнал происходит правильно. При вызове из cron журналированию python не удается записать в файл журнала.
Я подозреваю, что проблема в том, что cronjob не запускает оболочку, когда запрашивает скрипт.
Кажется, я нигде не могу найти, чтобы демон cron регистрировал свои ошибки.
Я создал /var/log/cron.log
Тем не менее, это не похоже на обновление.
Поскольку я думаю, что проблема связана с переменными ENV, я попытался заставить cronjob отобразить ENV для себя.
Вот как выглядит мой crontab:
$ crontab -u username -e
m h dom mon dow command
43 17 * * * /bin/sh python /home/username/public_html/IDM_app/manage.py cleanUpPosts
43 17 * * * python /home/username/public_html/IDM_app/manage.py cleanUpPosts
45 21 * * * echo "-----------------"; echo "import os; print os.environ" | python
47 21 * * * /bin/sh echo "------with shell-------"; echo "import os; printos.environ" | python
MAILTO=bryanw@nowhere.com
Я думал, что это выведет на экран, но это не так. Где будут выводить переменные ENV?
Независимо от того, вот файлы журнала:
# tail -n 5 /var/log/*.log
==> /var/log/auth.log <==
Jan 13 17:43:01 servername CRON[7901]: pam_unix(cron:session): session opened for user username by (uid=0)
Jan 13 17:43:01 servername CRON[7902]: pam_unix(cron:session): session opened for user username by (uid=0)
Jan 13 17:44:48 servername su[7909]: Successful su for root by username
Jan 13 17:44:48 servername su[7909]: + /dev/pts/0 username:root
Jan 13 17:44:48 servername su[7909]: pam_unix(su:session): session opened for user root by username(uid=1000)
==> /var/log/bootstrap.log <==
==> /var/log/cron.log <==
==> /var/log/daemon.log <==
==> /var/log/dpkg.log <==
==> /var/log/kern.log <==
==> /var/log/lpr.log <==
==> /var/log/mail.log <==
==> /var/log/mysql.log <==
==> /var/log/pycentral.log <==
==> /var/log/user.log <==
Что еще я должен попробовать, чтобы определить, почему мои скрипты не работают должным образом?