(продолжение предыдущего поста)
1. Что такое Cron и Crontab?
Cron — это планировщик задач в Linux, который автоматически выполняет скрипты или команды по расписанию. Crontab — это файл с расписанием задач (таблицы заданий), доступный каждому пользователю системы.
Cron позволяет автоматизировать выполнение задач с высокой гибкостью: от ежеминутных проверок до ежегодных операций. Главное — правильно настроить расписание с помощью синтаксиса и операторов, а также использовать удобные макросы для стандартных интервалов.
2. Синтаксис Cron-выражений
Cron-выражение состоит из 5 полей, определяющих расписание выполнения задачи:
- Минуты (0–59);
- Часы (0–23);
- День месяца (1–31);
- Месяц (1–12);
- День недели (0–6, где 0 = воскресенье, 6 = суббота).
Формат записи:
* * * * * команда (где
* — любое значение, команда — выполняемая команда/скрипт).Примеры из изображения:
-
# every Mon midnight → 0 0 * * 1 command (выполняется в полночь по понедельникам);-
# everyday 05:04 AM → 4 5 * * * command (каждый день в 05:04 утра);-
# every Sun 12:05 PM → 5 12 * * 0 command (каждое воскресенье в 12:05).3. Специальные сокращения (макросы)
Для удобства используются макросы — короткие обозначения стандартных расписаний:
-
@reboot — при загрузке системы;-
@hourly — каждый час;-
@daily (или @midnight) — ежедневно в полночь;-
@weekly — каждую неделю;-
@monthly — каждый месяц;-
@yearly (или @annually) — каждый год.Примеры:
-
@reboot command — запуск команды при старте системы;-
@hourly command — выполнение команды каждый час;-
@yearly command — выполнение команды раз в год.4. Операторы в Cron
В Cron используются специальные операторы для настройки расписаний:
- `*` — все возможные значения (например,
* * * * * — каждую минуту каждого часа);- `,` — перечисление значений (например,
0 8,12,16 * * * command — в 8:00, 12:00 и 16:00);- `-` — диапазон значений (например,
0 9-17 * * 1-5 command — с 9:00 до 17:00 по будням);- `/` — шаг (например,
*/5 * * * * command — каждые 5 минут);- `L` — последнее значение (используется в полях «день месяца» и «день недели»);
- `W` — ближайший будний день (например,
15 10 * * 5W — в 10:15 в ближайшую пятницу);- `?` — игнорирование поля (используется в «день месяца» или «день недели»).
5. Команды для работы с Crontab
Для управления заданиями Cron используются команды:
-
$ crontab -e — редактирование/создание файла crontab;-
$ crontab — просмотр текущего crontab-файла;-
$ crontab -r — удаление crontab-файла;-
$ crontab -u username -l — просмотр crontab другого пользователя;-
$ crontab -u username -e — редактирование crontab другого пользователя;-
$ echo "username" > /etc/cron.allow — разрешение пользователю использовать cron;-
$ echo "username" > /etc/cron.deny — запрет пользователю использовать cron;-
$ crontab -v — показ времени последнего изменения crontab.6. Примеры расписаний из изображения
- Каждые 6 часов:
0 */6 * * * command;- Каждые 5 минут:
*/5 * * * * command;- Ежемесячно:
0 0 1 * * command (1-го числа каждого месяца в 00:00);- Раз в год:
@yearly command или @annually command.7. Практические шаги
1. Откройте файл crontab:
$ crontab -e.2. Добавьте расписание и команду (используя синтаксис из п. 2–4).
3. Сохраните изменения (например, в редакторе
nano — Ctrl+O, затем Ctrl+X).4. Проверьте список задач:
$ crontab -l.5. При необходимости удалите задачи:
$ crontab -r.