Скрипт Python не работает как cronjob
Я перепробовал все, и я видел здесь другие вопросы, касающиеся этого, но я не могу на всю жизнь запустить скрипт на python как cronjob.
Я попробовал следующее.
* * * * * /usr/bin/python /home/myhome/myscript.py
Все myscript.py
"Спит" - это сон в течение 30 секунд, поэтому я могу проверить, запущены ли процессы, но я еще не видел его.
import time
time.sleep(30)
Что мне не хватает? Разве это не должно бежать? Я даже пытался открыть файл в /tmp и вывести туда, но не повезло. Я предполагаю, что это некоторая проблема переменной среды, но я не уверен, с чего начать.
Кстати, это нормально работает в командной строке.
1 ответ
Да, это должно работать нормально, при условии, что когда вы говорите "все работает нормально в командной строке", вы буквально вставляете ту же команду из записи crontab. Вещи, чтобы проверить:
- Работает ли демон cron? (Бежать
pidof cron
) - Если он работает, попробуйте перезапустить его. (Зависит от вашего вкуса Unix, но что-то вроде
service cron restart
или же/etc/init.d/cron restart
) - Если ваш скрипт по-прежнему не запускается, проверьте все в
/var/log
для соответствующего вывода - конкретный файл зависит от вашей конфигурации системного журнала, но/var/log/messages
а также/var/log/syslog
хорошие варианты, если/var/log/cron
не существует
Примечание: вам нужно быть root
чтобы сделать большинство из этих вещей - если у вас нет доступа, вам нужно поговорить с человеком, который управляет машиной.
Кроме того, когда вы говорите, что открываете файл в /tmp
Это, пожалуй, самая надежная вещь, которую вы можете сделать, чтобы убедиться, что она работает. В самом начале вашего скрипта (до импорта или чего-либо еще) добавьте:
with open("/tmp/testfile", "a") as fd:
fd.write("I am running\n")
Вы также можете проверить, правильно ли установлен ваш crontab - его нужно поместить в нечто вроде /var/spool/cron/crontabs
(это в Ubuntu Linux, он может отличаться в зависимости от версии Unix). Там вы должны увидеть файл с вашим именем пользователя, который должен содержать вашу запись.
Наконец, если вы действительно отчаялись, вы могли бы strace
ваш процесс cron, чтобы увидеть, что он делает:
sudo strace -f -p `pidof cron`
Вам не нужно слишком беспокоиться о специфике, но вы должны делать что-то каждую минуту. Если нет, то что-то идет не так.