У меня проблемы с запуском скрипта Python через cronjob.

Я могу запустить скрипт python (он должен соединиться с базой данных, вытащить несколько записей, сохранить это в CSV, а затем отправить его по электронной почте) вручную просто отлично. Тем не менее, я не могу заставить его работать. Он должен запускаться каждую минуту для тестирования.

Вот строка в crontab -e:

* * * * * /usr/bin/python /appl/belo_monthly/belo_monthly.py > /appl/belo_monthly/results.log

Я использовал chmod -x для файла. Я также попытался записать строки print файла в журнал. Никто не работает - даже не создаст файл .log.

Файл Python имеет #!/usr/bin/python в самом верху.

Что я пробовал:

Я посмотрел это здесь и обнаружил следующее: скрипт Python не работает как cronjob

Используя это как ссылку:

  1. Да, cron демон работает. pidof cron возвращает значение.
  2. От этого зависит множество других сервисов, поэтому я не могу перезапустить его.
  3. sudo tail -f /var/log/syslog дает мне следующее:

31 марта 10:21:01 ip-XX-XXX-XXX-XX CRON [30223]: (ubuntu) CMD (/usr/bin/python /appl/belo_monthly/belo_monthly.py> /appl/belo_monthly/results.log)

И это добавляет еще одну строку, как это минуту спустя.

  1. Наконец, я попробовал это: sudo strace -f -p pidof cron . Который вернул это:

execve("/bin/sh", ["/bin/sh", "-c", "/usr/bin/python /appl /belo_month" ...], [/* 6 vars * /]) = 0

А потом какой-то искаженный текстовый беспорядок, такой:

open("/appl/belo_monthly/results.log", O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 EACCES (Permission denied)
write(2, "/bin/sh: 1: ", 12) = 12
write(2, "cannot create /appl/belo_monthly"..., 63) = 63
write(2, "\n", 1)           = 1
exit_group(2) 

Так что я думаю, это не может создать журнал. Но как насчет скрипта Python? Что случилось?

1 ответ1

0

даже не создаст файл .log

Имеет ли пользователь, для которого вы установили cronjob, доступ на запись в /appl/belo_monthly/results.log? Вы создали cronjob как обычный пользователь или как root?

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