Выполнить скрипт Python на Crontab - PullRequest
77 голосов
/ 04 января 2012

Я пытаюсь выполнить скрипт на python с помощью linux crontab, но я нашел много решений, и ни одно из них не работает.Например: отредактируйте anacron в /etc/cron.d или используйте crontab -e.

Я хочу запускать этот скрипт каждые 10 минут.

Какой файл мне нужно отредактировать, чтобы настроить это?

Заранее спасибо

РЕДАКТИРОВАТЬ

Я поставил эту строку в конце файла, но она ничего не меняет.Нужно ли перезапускать какой-либо сервис?

*/2 * * * * /usr/bin/python /home/souza/Documets/Listener/listener.py

РЕДАКТИРОВАТЬ [2]

Ребята, я следовал исходному коду.Возможно, здесь есть проблема, но когда я запускаю ее вручную, она работает:

http://pastebin.com/qsWHNzqT

Ответы [ 3 ]

116 голосов
/ 04 января 2012

Просто используйте crontab -e и следуйте инструкциям здесь:

http://adminschoice.com/crontab-quick-reference

Посмотрите в пункте 3 руководство о том, как указать частоту.

Исходя из ваших требований, оно должно быть:

*/10 * * * * /usr/bin/python script.py
56 голосов
/ 04 января 2012

Поместите ваш скрипт в файл foo.py, начинающийся с

#!/usr/bin/python

, затем дайте разрешение на выполнение этого скрипта, используя

chmod a+x foo.py

и используйте полный путь вашего foo.pyфайл в вашем crontab.

См. документацию execve (2) , которая обрабатывает shebang

14 голосов
/ 12 января 2016

Как вы уже сказали, ничего не меняет ,

Во-первых, вы должны перенаправить как stdin, так и stderr из выполнения crontab, как показано ниже:

*/2 * * * * /usr/bin/python /home/souza/Documets/Listener/listener.py > /tmp/listener.log 2>&1

тогда вы можете просмотреть файл /tmp/listener.log, чтобы увидеть, был ли скрипт выполнен так, как вы ожидаете.

Во-вторых, угадайте, что вы имеете в виду измените что-либо , просмотрев файлы, созданные вашей программой:

f = file('counter', 'r+w')
json_file = file('json_file_create_server.json','r+w')

указанное выше задание crontab не создаст этот файл в каталоге /home/souza/Documets/Listener, так как задание cron не выполняется в этом каталоге, и вы используете относительный путь в программе. Таким образом, чтобы создать этот файл в каталоге /home/souza/Documets/Listener, следующая задача cron сделает свое дело:

*/2 * * * * cd /home/souza/Documets/Listener && /usr/bin/python listener.py > /tmp/listener.log 2>&1

Перейдите в рабочий каталог и оттуда выполните скрипт, после чего вы сможете просмотреть файлы, созданные на месте.

...