RTFM.WIKI

Ordnung muß sein. Ordnung über alles (18+)

Инструменты пользователя

Инструменты сайта


linux:terminal:terminal_tnt_cron

Трюки в консоли: Cron

console

CRON (Command Run ON) - демон-планировщик задач в UNIX-подобных операционных системах, использующийся для периодического выполнения заданий в заданное время.

Памятка для себя.

# minute (0-59),
# |      hour (0-23),
# |      |       day of the month (1-31),
# |      |       |       month of the year (1-12),
# |      |       |       |       day of the week (0-6 with 0=Sunday).
# |      |       |       |       |       commands
  0      2       *       *       0,4     /root/bin/logchecker

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 * * * *".

HowTo

Валидация crontab

Проверка crontab/cron.d с помощью скрипта chkcrontab

Скрипт verifycron из книги Wicked cool shell scripts - полный сборник, 053-verifycron.sh

FIXME

Запускать cron каждый 10 секунд

Cron в Linux минимально принимает 1 минуту. Для запуска каждые n-секунд можно использовать sleep.

* * * * * php -q /var/www/cron_worker.php
* * * * * sleep 10; php -q /var/www/cron_worker.php
* * * * * sleep 20; php -q /var/www/cron_worker.php
* * * * * sleep 30; php -q /var/www/cron_worker.php
* * * * * sleep 40; php -q /var/www/cron_worker.php
* * * * * sleep 50; php -q /var/www/cron_worker.php

Предотвратить повторный запуск задачи из cron

/usr/bin/flock -xn /tmp/my_long_task.lock -c 'sh /path/backup.sh
  • -x –exclusive - get an exclusive lock (default)
  • -n –nonblock - fail rather than wait

Ошибки

Мой список траблшутинга

  • Первая строка не должна начинаться с * * * * *, может быть переменная или #закоментированная строка
  • Редактировать всё желательно через crontab -e.
  • Для поиска ошибок можно использовать утилиту chkcrontab.
  • В конце файла должна быть пустая строка.
  • Скрипт может не работать если не настроен PATH=
  • Права должны быть -rw-r–r–, owner root:root

Error: bad username; while reading /etc/cron.d/script

А также ERROR (Syntax error, this crontab file will be ignored)

Нужно указать пользователя.

Например Minute-Hour-Day_of_Month-Month-Day_of_week

0 3 * * * root php /var/www/perl.php

Error: bad minute; while reading crontab

Вероятнее всего используется перенос строк чего не должно быть.

No MTA installed, discarding output

Это скорее warning, нежели error. Нужно установить MTA (postfix или exim).

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
 
linux/terminal/terminal_tnt_cron.txt · Последнее изменение: 2021/10/17 01:21 — 127.0.0.1