11 примеров команд Cron в Linux [Запланировать задания Cron]

В этой статье мы рассмотрим и увидим, как можно планировать и запускать задачи Linux в фоновом режиме автоматически через регулярные интервалы с использованием команды Crontab.

Ручное выполнение частой задачи является трудной задачей для системных администраторов, и такие задачи могут быть запланированы и выполняться автоматически в фоновом режиме без человеческого вмешательства с использованием демона cron в Linux или операционной системе, подобной Unix.

Вы можете автоматизировать резервное копирование системы Linux, планирование обновлений и синхронизацию файлов и многое другое, используя демон Cron, который используется для запуска запланированных задач из командной строки, или использовать онлайн-инструменты для генерации задач cron.

Cron просыпается каждую минуту и проверяет запланированные задачи в подсчете – Crontab (CRON TABle) – это таблица, где мы можем планировать такие виды повторяющихся задач.

Советы: Каждый пользователь может иметь свой собственный crontab для создания, изменения и удаления задач. По умолчанию cron включен для пользователей, однако мы можем ограничить пользователей, добавив запись в файл /etc/cron.deny.

Кронтаб в Linux

Файл кронтаба состоит из команд на строку и фактически имеет шесть полей, разделенных пробелом или табуляцией. Первые пять полей представляют время выполнения задач, а последнее поле предназначено для команды.

  • Минута (принимает значения от 0 до 59)
  • Час (принимает значения от 0 до 23)
  • День месяца (принимает значения от 1 до 31)
  • Месяц года (значения от 1-12 или Jan-Dec, вы также можете использовать первые три буквы названия каждого месяца, т.е. Jan или Jun.)
  • День недели (значения от 0-6 или Sun-Sat, Здесь также вы можете использовать первые три буквы названия каждого дня, т.е. Sun или Wed.)
  • Команда – /путь/к/команде или скрипту, который вы хотите запланировать.

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

A system administrator can use the predefined cron directory as shown below.

  • /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. Специальные строки для общего расписания

Strings Meanings
@reboot The command will run when the system reboots.
@daily Once per day or may use @midnight.
@weekly Once per week.
@yearly Once per year. we can use the @annually keyword also.

Нужно заменить пять полей команды cron ключевыми словами, если вы хотите использовать то же самое.

10. Несколько команд с двойным амперсандом(&&)

В приведенном ниже примере команда1 и команда2 выполняются ежедневно.

# crontab -e

@daily <command1> && <command2>

11. Отключение уведомлений по электронной почте.

По умолчанию cron отправляет почту на учетную запись пользователя, выполняющего cronjob. Если вы хотите отключить это, добавьте свою задачу cron, аналогичную приведенному ниже примеру. Использование опции >/dev/null 2>&1 в конце файла перенаправит всё вывод результатов cron в /dev/null.

[root@tecmint ~]# crontab -e
* * * * * >/dev/null 2>&1

заключение: Автоматизация задач может помочь нам выполнять наши задачи более эффективно, без ошибок и эффективно. Для получения дополнительной информации вы можете обратиться к странице руководства по использованию crontab, набрав команду ‘man crontab‘ в вашем терминале.

Source:
https://www.tecmint.com/11-cron-scheduling-task-examples-in-linux/