Скрипт Python запускается из терминала, но не из crontab. Использование абсолютных путей, но безрезультатно

#python #bash #cron #centos7

#python #bash #cron #centos7

Вопрос:

Это мой crontab.

 SHELL=/bin/bash
PATH=/home1/<user>/.pyenv/shims:/home1/<user>/.pyenv/bin:/usr/lib64/qt-3.3/bin:/usr/nhnkrb5/bin:/usr/bin:/bin:/usr/X11R6/bin:/home1/<user>/.local/bin:/home1/<user>/bin
HOME=/home1/<user>


# Do something
0 1 * * * /home1/<user>/.pyenv/shims/python /home1/<user>/folder/myscript.py >> /home1/<user>/folder/$(date " %Y.%m.%d-%H.%M.%S").log 2>amp;1


 

Он отлично работает с терминала, независимо от того, откуда я его выполняю. Я перепробовал все ответы на этой странице, и мой cron не возвращает никаких ошибок.
https://askubuntu.com/questions/23009/why-crontab-scripts-are-not-working

Я также проверил, что мой $PATH cron, с которого запускается cron, идентичен тому, который находится в моем bash. Проверено с помощью * * * * * env > /tmp/env.txt

Пожалуйста, скажите мне, что я делаю не так.

Комментарии:

1. Согласно этому ответу , вам нужно экранировать % символ.

2. @user000001 спасибо, я избежал % , но, к сожалению, он все еще не работает.

3. @Yuu: Измените в конце на: ...myscript.py 2>amp;1 >> /tmp/myscript.log . Прочтите журнал, если таковой имеется.

Ответ №1:

Лучше добавить заголовок python в строке 1 в ваш основной скрипт. Например, если ваш основной файл скрипта app.py , то его содержимое может быть следующим:

 !#/home1/<user>/.pyenv/shims/python

# Here goes your Python Script. 
 

и затем

 $ chmod  x app.py
 

Теперь вы можете добавить

 # Do something
0 1 * * * /home1/<user>/folder/myscript.py >> /home1/<user>/folder/$(date " %Y.%m.%d-%H.%M.%S").log 2>amp;1
 

Я столкнулся с той же проблемой, скрипт работает, когда я запускаю вручную, но не работает crontab . Этот метод сработал.