#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
. Этот метод сработал.