Cron не может найти файл ночью? [дубликат]

У меня есть задание cron, записанное для root (я пишу в журнал в / var / log , поэтому требуются права root). Проблема в том, что иногда это работает, а иногда нет.

Задача cron - просто вызвать скрипт python в моем домашнем каталоге, который затем сделает всю тяжелую работу.

Я настроил выполнение задания посреди ночи, чтобы оно не мешало тому, что я делаю, и чтобы API, с которым он взаимодействует, с меньшей вероятностью изменился (API обновляется в течение дня) .

Но каждое утро я проверяю журналы и получаю следующую ошибку:

python3: can't open file '/home/myUser/path/to/the/main.py': 
[Errno 2] No such file or directory

Мой ответ на это - изменить время в crontab на несколько минут сверх времени, когда я проверяю журналы, подождать несколько минут и файл запускается. Единственное , что я меняю, - это время, и внезапно это срабатывает.

Итак, я точно знаю, что файл существует.

Я пробовал различные варианты времени ночью ( 30 23 * * *, 01 01 * * *, 10 02 * * * ), ни один из них не работал, но всякий раз, когда я устанавливал его на 2 через несколько минут после того, как я проверю утром, все в порядке.

Вот текущий crontab:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

01 01 * * * python3 /home/myUser/path/to/the/main.py >> /var/log/thisjobs.log 2>&1

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

Кто-нибудь видел это раньше? Могу ли я попытаться найти этот файл без необходимости каждый раз вручную изменять скрипт?

РЕДАКТИРОВАТЬ: вот мой результат env для cron :

LANGUAGE=en_GB:en
HOME=/root
LOGNAME=root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
LANG=en_GB.UTF-8
SHELL=/bin/sh
PWD=/root

Также подумал, что упомянул, что безрезультатно пытался использовать следующую команду (после указанного времени) (та же ошибка, но только с main.py вместо полного пути):

cd /home/myUser/path/to/the; python3 main.py
1
задан 25 April 2015 в 08:58

1 ответ

Оказывается, что это было ответом: Крон перестал работать ночью

, я выполняю это на своем сервере (который я только ssh в) за ночь. Так наличие зашифрованного домашнего диска означало, что, когда я не зарегистрирован, ничто ни для чего не доступно за пределами home, включая cron.

я переместил свой сценарий в /usr/local/bin (может быть лучшее место для помещения его, но я не чувствовал, что что-либо еще подходило), который случайно означал, что я могу назвать его без любого пути вообще (предполагающий, что Вы установили PATH переменная).

Теперь все работает, как это должно.

1
ответ дан 25 April 2015 в 18:58

Другие вопросы по тегам:

Похожие вопросы: