Встроенный процесс 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