Я пытаюсь выполнить некоторую команду, как это:

*/10 0,1 * * * $BPY some_script.py

Это значит, что я хочу запускать его каждые 10 минут с 0:00 до 1:00.

НО: я вижу в моем /var /log /cron, что он не выполняется. И еще: это единственная не выполняемая задача (поэтому мой cron хорошо работает в других случаях). Операционным системом является Debian GNU /Linux 6.0.

Что я делаю неправильно? Ноль плохой час?

обновление: $ BPY просто содержит путь к исполняемому файлу Python. Другие команды также используют его, и он работает нормально.

Ну, если бы это была действительно плохая команда - она бы хотя бы появилась в /var /log /cron

обновление 2: скрипт отлично работает с другими hours (например, * * * * * отлично запускает его каждую минуту, и он делает именно то, что я хочу)

1 ответ1

1

Похоже, что у cron нет определения $BPY . Это some_script.py который должен быть выполнен? Какова цель $BPY? Кроме того, вам, вероятно, потребуется полный путь к сценарию, а не только его имя.

Предполагая, что some_script.py является реально предназначенным исполняемым скриптом, попробуйте просто выполнить его (с полным путем !!)

В ваших комментариях под этим ответом вы сказали, что $BPY - это путь Python. Вместо этого вы должны использовать shebang чтобы указать полный путь интерпретатора, который должен использоваться. Типичный питон, определяющий python: #!/usr/bin/python . Это должна быть первая строка вашего файла some_script.py .

Что касается синтаксиса ...

Формат Cron - это простой, но мощный и гибкий способ определения времени и частоты различных действий.

Формат cron состоит из полей, разделенных пробелами:

[Min] [Hr] [Day of Month] [Month of Year] [Day of Week]

Следующая диаграмма показывает, из чего он состоит:

* * * * *
| | | | |
| | | | +---- Day of the Week   (range: 0-6, 0 standing for Sunday; Mon,Tue, etc.
| | | |                          Most OS's recognize Sunday as 0 or 7)
| | | +------ Month of the Year (range: 1-12 or Jan, Feb, etc)
| | +-------- Day of the Month  (range: 1-31)
| +---------- Hour              (range: 0-23)
+------------ Minute            (range: 0-59)

Любое из этих 6 полей может быть звездочкой (*). Это будет означать весь диапазон возможных значений, т.е. каждую минуту, каждый час и т.д. В первых четырех полях.

Любое поле может содержать список значений, разделенных запятыми (например, 1,3,7) или диапазон значений (два целых числа, разделенных дефисом, например, 1-5).

После звездочки (*) или диапазона значений вы можете использовать символ / чтобы указать, что значения повторяются снова и снова с определенным интервалом между ними. Например, вы можете написать 0-23/2 в поле Час, чтобы указать, что какое-то действие должно выполняться каждые два часа (оно будет иметь тот же эффект, что и 0,2,4,6,8,10,12,14,16,18,20,22). Значение */4 в поле «Минуты» означает, что действие должно выполняться каждые 4 минуты. 1-30/3 означает то же, что и 1,4,7,10,13,16,19,22,25,28 .

В полях «Месяц» и «День недели» вместо числовых значений можно использовать названия месяцев или дней недель, сокращенные до первых трех букв (Jan , Feb , ..., Dec или Mon , Tue , ..., Sun).

Кроме того, вы можете использовать специальные ключевые слова вместо первых 5 полей, указанных выше:

string         meaning
------         -------
@reboot        Run once, at startup.
@yearly        Run once a year, "0 0 1 1 *".
@annually      (same as @yearly)
@monthly       Run once a month, "0 0 1 * *".
@weekly        Run once a week, "0 0 * * 0".
@daily         Run once a day, "0 0 * * *".
@midnight      (same as @daily)
@hourly        Run once an hour, "0 * * * *".

Этот альтернативный формат не поддерживается в старых проприетарных операционных системах, таких как SCO Unix.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .