11 примеров задач планирования Cron в Linux
В этой статье мы рассмотрим и увидим, как мы можем планировать и запускать задачи в фоновом режиме автоматически через определенные промежутки времени с помощью команды Crontab.
Выполнение частых заданий вручную является сложной задачей для системных администраторов, и такие задачи можно планировать и запускать автоматически в фоновом режиме без вмешательства человека с помощью демона cron в Linux или Unix-подобной операционной системе.
Например, вы можете автоматизировать резервное копирование системы Linux, запланировать обновления и синхронизацию файлов, а также многое другое с помощью демона Cron, который используется для запуска запланированных задач из командной строки или использования онлайн-инструментов для создания заданий cron.
Cron просыпается каждую минуту и проверяет задачи расписания в счетчике - Crontab ( CRON TABle) - это таблица, в которой мы можем планировать такие виды повторяющихся задач.
Подсказки: у каждого пользователя может быть свой собственный crontab для создания, изменения и удаления задач. По умолчанию cron включен для пользователей, однако мы можем ограничить пользователей, добавив запись в файл /etc/cron.deny.
Файл Crontab состоит из команд в каждой строке и фактически имеет шесть полей, разделенных пробелом или табуляцией. Первые пять полей представляют время для выполнения задач, а последнее поле предназначено для команд.
- Минуты (удерживайте значения от 0 до 59)
- Час (удерживайте значения от 0 до 23)
- День месяца (удерживайте значения от 1 до 31)
- Месяц года (удерживайте значения от 1 до 12 или с января по декабрь, вы можете использовать первые три буквы названия каждого месяца, например, январь или июнь).
- День недели (удерживайте значения между 0-6 или вс-сб, здесь также вы можете использовать первые три буквы названия каждого дня, например, вс или среда).
- Команда - / путь / к / команде или сценарию, который вы хотите запланировать.
1. Список записей Crontab
Вывести список задач или управлять ими с помощью команды crontab с опцией -l
для текущего пользователя.
# crontab -l
00 10 * * * /bin/ls >/ls.txt
2. Редактировать записи в Crontab.
Чтобы отредактировать запись crontab, используйте параметр -e
, как показано ниже. В приведенном ниже примере откроются задания расписания в редакторе VI. Внесите необходимые изменения и перестаньте нажимать кнопки :wq
, автоматически сохраняющие настройку.
# crontab -e
3. Список запланированных заданий Cron
Для составления списка запланированных заданий определенного пользователя, вызываемого tecmint, используйте опции -u
(Пользователь) и -l
(Список).
# crontab -u tecmint -l
no crontab for tecmint
Примечание. Только пользователь root имеет полные права на просмотр записей crontab других пользователей. Обычные пользователи не могут просматривать других.
4. Удалите запись в Crontab.
Внимание: Crontab с параметром -r
удалит все запланированные задания без подтверждения от crontab. Используйте опцию -i
перед удалением crontab пользователя.
# crontab -r
5. Запрос перед удалением Crontab
crontab с опцией -i
запросит подтверждение от пользователя перед удалением crontab пользователя.
# crontab -i -r
crontab: really delete root's crontab?
6. Разрешенные специальные символы (*, -, /,?, #)
- Звездочка (*) - соответствие всем значениям в поле или любому возможному значению.
- Дефис (-) - для определения диапазона.
- Косая черта (/) - 1-е поле / 10, что означает каждые десять минут или приращение диапазона.
- Запятая (,) - Для отдельных элементов.
7. Общесистемное расписание Cron
Системный администратор может использовать предопределенный каталог cron, как показано ниже.
- /etc/cron.d
- /etc/cron.daily
- /etc/cron.hourly
- /etc/cron.monthly
- /etc/cron.weekly
8. Запланируйте работу на определенное время.
Приведенные ниже задания удаляют пустые файлы и каталог из / tmp ежедневно в 12:30. Вам необходимо указать имя пользователя для выполнения команды crontab. В приведенном ниже примере пользователь root выполняет задание cron.
# crontab -e
30 0 * * * root find / tmp -type f -empty -delete
9. Специальные строки для общего расписания
Строки | Значения |
@reboot<br> | Команда запустится при перезагрузке системы.<br> |
@daily<br> | Один раз в день или можно использовать @midnight.<br> |
@weekly<br> | Один раз в неделю.<br> |
@yearly<br> | Один раз в год. Мы также можем использовать ключевое слово @annually.<br> |
Необходимо заменить пять полей команды cron ключевыми словами, если вы хотите использовать то же самое.
10. Несколько команд с двойным амперсандом
В приведенном ниже примере команды command1 и command2 выполняются ежедневно.
# crontab -e
@daily <command1> && <command2>
11. Отключить уведомление по электронной почте.
По умолчанию cron отправляет почту учетной записи пользователя, выполняя cronjob. Если вы хотите отключить его, добавьте задание cron, как в примере ниже. Использование параметра >/dev/null2>&1 в конце файла перенаправит весь вывод результатов cron в /dev/null.
[root@tecmint ~]# crontab -e
* * * * * >/dev/null 2>&1
Заключение: Автоматизация задач может помочь нам выполнять наши задачи лучше, без ошибок и эффективно. Вы можете обратиться к странице руководства crontab для получения дополнительной информации, набрав команду man crontab в своем терминале.