В crontab есть следующая запись:
* * * * * python -c "import datetime; datetime.datetime.now()" >> /home/myname/pythoncron1.log
Файл pythoncron1.log создается, но в нем ничего нет, а дата изменения файла не обновлялась с момента создания файла. Я ожидал увидеть в файле несколько строк, по одной на каждую минуту выполнения задания cron.
Почему это может не работать?
(Вы, наверное, догадались, я пытаюсь сделать что-то более сложное, чем приведенный выше пример, но я сузил проблему до того, что python явно не запускается при вызове cron).
Просто чтобы уточнить, есть ли у вас какие-либо операторы печати в вашем скрипте Python?
В интерактивном режиме они вам не нужны:
Python 2.6.1 (r261:67515, Jul 7 2009, 23:51:51)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2010, 2, 24, 19, 36, 21, 244853)
В командной строке вы делаете:
example:~% python -c "import datetime; datetime.datetime.now()"
example:~% python -c "import datetime; print datetime.datetime.now()"
2010-02-24 19:38:59.639324
example:~%
вам может потребоваться поместить весь путь Python, например. / usr / bin / питон
Если на самом деле это не то, что сказал Френчи, что, скорее всего, так и есть, может быть полезно просмотреть письмо пользователя. Cron отправляет результаты заданий cron по электронной почте в учетную запись пользователя этого crontab. Вот почему вы часто видите, что STDOUT и STDERR передаются по конвейеру в / dev / null, поэтому они не будут отправлены по почте с выводом, который им не важен.
Вы можете использовать команду mail от имени этого пользователя для проверки почты с полезными выводами. Кроме того, файл / var / log / cron может содержать полезную информацию.
python -c "import datetime; datetime.datetime.now()"
ничего не выводит, поэтому в файл нечего выводить.
Убедитесь, что запускаемая вами команда действительно выводит что-то в командной строке.