Скрипт задачи Cron Python не работает

У меня есть скрипт на Python, который я хочу запускать каждую ночь в полночь. Я использую планировщик cron прямо сейчас, чтобы сделать это, однако я не могу понять, почему он не работает. На данный момент я использовал близкое время (в течение следующей минуты или около того) для тестирования cronjob, но в конечном итоге я хочу, чтобы он работал до полуночи.

Вот что я поместил в свой файл crontab (для запуска в 14:43), размещенный на моей машине с Ubuntu:

43 14 * * * root /home/grantmcgovern/Developer/Projects/StudyBug/Main.py

Я даже поставил:

#!user/bin/python 

поверх всех файлов .py.

Я также сделал:

chmod +x "scriptname".py

Для каждого из файлов .py и до сих пор не повезло. Я упускаю что-то явно очевидное? Я должен отметить, что я впервые играю с задачами cron.


person carbon_ghost    schedule 18.04.2014    source источник
comment
Строка shebang (первая строка в скриптах Python) должна выглядеть как #!/usr/bin/python, а не #!user/bin/python.   -  person bdesham    schedule 18.04.2014
comment
@bdesham Спасибо за этот улов, но все равно не повезло.   -  person carbon_ghost    schedule 18.04.2014
comment
В качестве альтернативы #!/usr/bin/python ... #!/usr/bin/env python   -  person clutton    schedule 18.04.2014
comment
@clutton Я пробовал это, к сожалению, это тоже не сработало   -  person carbon_ghost    schedule 18.04.2014
comment
Попробуйте 0 0 * * * root /home/grantmcgovern/Developer/Projects/StudyBug/Main.py, если вы хотите запустить его в полночь.   -  person Alexander Ejbekov    schedule 18.04.2014
comment
Ваш системный журнал показывает, что cron сработал?   -  person clutton    schedule 18.04.2014
comment
вы можете зарегистрировать выполнение, добавив > /tmp/mycronlog.log в конце, сделав его 43 14 * * * root /home/grantmcgovern/Developer/Projects/StudyBug/Main.py > /tmp/mycronlog.log. Что говорит журнал?   -  person evading    schedule 18.04.2014
comment
@evading В журнале ничего нет   -  person carbon_ghost    schedule 18.04.2014
comment
@carbon_ghost — убедитесь, что журнал является записываемым файлом в доступном для записи каталоге (т. е. у вас есть права на его запуск). Кроме того, в вашем SSH (если у вас есть к нему доступ) вы можете запустить ту же команду (без cron)?   -  person Duniyadnd    schedule 18.04.2014
comment
Извините, вам также может понадобиться передать stderr в stdout. Попробуйте 43 14 * * * root /home/grantmcgovern/Developer/Projects/StudyBug/Main.py > /tmp/mycronlog.log 2>&1 Обратите внимание на последний бит. редактируйте также, делайте то, что говорит @Duniyadnd :)   -  person evading    schedule 18.04.2014
comment
@evading дело в том, что мне даже не нужен файл журнала, чтобы узнать, успешно ли он работает. Я использую selenium, библиотеку веб-драйверов Python, которая физически открывает Firefox каждый раз, когда запускается скрипт, чтобы я знал, работает ли он таким образом.   -  person carbon_ghost    schedule 18.04.2014
comment
После последнего выполнения я получил в журнале следующий вывод: /bin/sh: 1: root: не найдено   -  person carbon_ghost    schedule 18.04.2014
comment
@carbon_ghost Может быть, но файл журнала может сказать вам, где произошел сбой сценария.   -  person evading    schedule 18.04.2014
comment
Это говорит вам, что вы пытаетесь запустить программу с именем root.   -  person evading    schedule 18.04.2014
comment
@carbon_ghost, если мой ответ ниже помог вам, отметьте его как принятый :)   -  person marven    schedule 19.04.2014


Ответы (2)


Из вашего текущего файла crontab вы в основном запускаете root /home/grantmcgovern/Developer/Projects/StudyBug/Main.py каждый раз.

Если вы хотите запустить его как root, используйте sudo crontab -e и вместо него поставьте 43 14 * * * /usr/bin/python /home/grantmcgovern/Developer/Projects/StudyBug/Main.py.

person marven    schedule 18.04.2014

Я думаю, что он ищет команду «root», поэтому синтаксис неверен, поэтому должно быть так...

43 14 * * * /home/grantmcgovern/Developer/Projects/StudyBug/Main.py

Если вам нужно, чтобы он работал как root, я думаю, вы можете использовать su следующим образом:

43 14 * * * su root -c "/home/grantmcgovern/Developer/Projects/StudyBug/Main.py"

Если добавить в системный crontab то думаю все равно будет.

person clutton    schedule 18.04.2014