2016-11-14 10 views
0

Я пытаюсь получить работу в crontab, чтобы работать дважды в день в разное время. Это скрипт python, который вызывает другие скрипты python и скрипт bash как функции. Все сценарии расположены на пути, указанном в crontab. Кронтаб выглядит следующим образом:Программа Python, дающая ошибку us/bin/env python Нет такого файла с crontab

PATH=/home/test/Desktop/UntitledFolder/ContinuousTest 
0 08 * * 1,2,3,4,5 /home/test/Desktop/UntitledFolder/ContinuousTest/automated.py 
46 10 * * * /home/test/Desktop/UntitledFolder/ContinuousTest/automated.py 

код выглядит следующим образом

#!/usr/bin/env python 

import curses 
import os 


def Move(): 
    os.system("cd /home/test/Desktop/UntitledFolder/ContinuousTest") 


def Upgrade(): 
    os.system("python upgrade.py") 
    os.system("python upgrade.py") 


def Setup(): 
    os.system("python setup.py") 
    os.system("python setup2.py") 

def Throughput(): 
    os.system("./test.sh") 

def Sleep(): 
    os.system("sleep 320") 

Move() 
Setup() 
Upgrade() 
Sleep() 
Throughput() 

Я вижу, что, когда скрипт запускается из cronjob, я получаю эту ошибку: /USR/BIN/ENV: python: Нет такого файла или каталога

В чем может быть проблема?

+0

'cronjob' работает как пользователь с разными правами и с другой средой (т. Е. Может иметь разные пути в переменной' PATH'). Возможно, вам придется использовать полный путь к python - то есть '/ usr/bin/python'. – furas

ответ

1

/usr/bin/env необходимо найти PATH, чтобы найти python исполняемый файл для запуска. Поскольку вы полностью заменяете PATH только одним каталогом и не включаете обычные /bin и /usr/bin пути, env не можете найти python для запуска.

Решение либо установить PATH=/bin:/usr/bin:/home/test/Desktop/UntitledFolder/ContinuousTest, или просто обойтись без env вообще и поставить #!/usr/bin/python (или python3 если это намерение) в верхней части вашего сценария.

Другим разумным решением было бы не установить PATH в вашем crontab, но поставить PATH изменения в скрипте по мере необходимости, а не - что может привести к меньшему количеству сюрпризов вниз по дороге, если добавить дополнительные рабочие места для вашего crontab.