1

Я перепробовал все, и я видел здесь другие вопросы, касающиеся этого, но я не могу на всю жизнь запустить скрипт на python как cronjob.

Я попробовал следующее.

* * * * * /usr/bin/python /home/myhome/myscript.py

Все, что делает myscript.py - это спит в течение 30 секунд, поэтому я могу проверить процессы, если они запущены, но я еще не видел их.

import time
time.sleep(30)

Что мне не хватает? Разве это не должно бежать? Я даже пытался открыть файл в /tmp и вывести туда, но не повезло. Я предполагаю, что это некоторая проблема переменной среды, но я не уверен, с чего начать.

Кстати, это нормально работает в командной строке.

1 ответ1

4

Да, это должно работать нормально, при условии, что когда вы говорите "все работает нормально в командной строке", вы буквально вставляете ту же команду из записи crontab. Вещи, чтобы проверить:

  1. Работает ли демон cron? (Запустить pidof cron)
  2. Если он работает, попробуйте перезапустить его. (Зависит от вашего вида Unix, но что-то вроде service cron restart или /etc/init.d/cron restart)
  3. Если ваш сценарий по-прежнему не запускается, проверьте все в /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`

Вам не нужно слишком беспокоиться о специфике, но вы должны делать что-то каждую минуту. Если нет, то что-то идет не так.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .