Встроенный процесс cron в Linux может помочь нам удовлетворить эти потребности. В сочетании с shell-скриптами cron может справляться даже с очень сложными командами.

Введение в cron

Команда crontab, которую мы часто используем, — это сокращение от cron table. Это файл конфигурации для cron, также называемый списком заданий. Соответствующие файлы конфигурации можно найти в следующих папках.

  • Каталог /var/spool/cron/ хранит задачи crontab для каждого пользователя, включая root. Каждая задача названа по имени своего создателя.
  • /etc/crontab Этот файл отвечает за планирование различных административных задач и задач обслуживания.
  • /etc/cron.d/ Этот каталог используется для хранения любых crontab-файлов или скриптов, которые должны быть выполнены.
  • Мы также можем помещать скрипты в каталоги /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly и /etc/cron.monthly, чтобы запускать их раз в час, день, неделю или месяц.

Использование crontab

Обычно мы используем следующие команды:

crontab [-u username]    //省略用户表表示操作当前用户的crontab
    -e      (编辑工作表)
    -l      (列出工作表里的命令)
    -r      (删除工作作)

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

Структура команды crontab состоит из времени + действия. Её время включаетминуты, часы, дни, месяцы, недели— пять типов. Операторы:

  • * Все числа в пределах диапазона значений
  • /Через каждое заданное количество чисел
  • -От X до Z
  • ,Отдельные числа

Примеры

Пример 1: Выполнять myCommand раз в 1 минуту

* * * * * myCommand

Пример 2: Выполнять на 3-й и 15-й минутах каждого часа

3,15 * * * * myCommand

Пример 3: Выполнять на 3-й и 15-й минутах с 8 утра до 11 утра

3,15 8-11 * * * myCommand

Пример 4: Выполнять на 3-й и 15-й минутах с 8 утра до 11 утра каждые два дня

3,15 8-11 */2  *  * myCommand

Пример 5: Выполнять на 3-й и 15-й минутах с 8 утра до 11 утра каждый понедельник

3,15 8-11 * * 1 myCommand

Пример 6: Перезапускать smb в 21:30 каждую ночь

30 21 * * * /etc/init.d/smb restart

Пример 7: Перезапускать smb в 4:45 1-го, 10-го и 22-го числа каждого месяца

45 4 1,10,22 * * /etc/init.d/smb restart

Пример 8: Перезапускать smb в 1:10 каждую субботу и воскресенье

10 1 * * 6,0 /etc/init.d/smb restart

Пример 9: Перезапускать smb каждые 30 минут с 18:00 до 23:00 каждый день

0,30 18-23 * * * /etc/init.d/smb restart

Пример 10: Перезапускать smb в 11:00 вечера каждую субботу

0 23 * * 6 /etc/init.d/smb restart

Пример 11: Перезапускать smb каждый час

0 */1 * * * /etc/init.d/smb restart

Пример 12: Перезапускать smb каждый час с 11 вечера до 7 утра

0 23-7/1 * * * /etc/init.d/smb restart