Задания cron для linux

Содержание
  1. Планирование заданий Cron с помощью Crontab
  2. Что такое файл Crontab
  3. Синтаксис и операторы Crontab
  4. Общесистемные файлы Crontab
  5. Предопределенные макросы
  6. Команда Linux Crontab
  7. Переменные Crontab
  8. Ограничения Crontab
  9. Примеры заданий Cron
  10. Выводы
  11. 18 примеров команды crontab
  12. Синтаксис Crontab
  13. Как изменить расписание
  14. Как узнать список заданий Crontab
  15. Примеры
  16. 1. Ежедневно в 2 часа ночи.
  17. 2. Дважды в день
  18. 3. Каждую минуту
  19. 4. Каждое воскресенье в 17:00
  20. 5. Каждые 10 минут
  21. 6. Определенные месяцы
  22. 7. Определенные дни
  23. 8. Первое воскресенье каждого месяца.
  24. 9. Каждые четыре часа.
  25. 10. Дважды в каждое воскресенье и понедельник.
  26. 11. Несколько задач
  27. 12. Ежегодно (@yearly)
  28. 13. Ежемесячно (@monthly)
  29. 14. Еженедельно (@weekly)
  30. 15. Ежедневно (@daily)
  31. 16. Ежечасно (@hourly).
  32. 17. Выполнение задач при перезагрузке системы (@reboot).
  33. 18. Отправка результатов заданий на электронную почту
  34. Задания cron для linux
  35. 1. Планирование задач в течение определённого времени
  36. 2. Расписание задач для более частого выполнения (например, дважды в день)
  37. 3. Расписание работы в течение определённого интервала времени (например, только в будние дни)
  38. 4. Как просмотреть записи Crontab?
  39. 5. Как редактировать записи crontab?
  40. 6. Выполнение Cron каждую минуту
  41. 7. Запуск фоновых задач Cron каждые 10 минут
  42. 8. Расписание работы для первой минуты каждого года с использованием @yearly
  43. 9. Запуск задач каждый месяц с использованием ключевого слова @monthly
  44. 10. Запуск задач каждый день с использованием @daily
  45. 11. Как выполнить команду Linux после каждой перезагрузки, используя @reboot?
  46. 13. 12. Как отключить/перенаправить исходящую почту Crontab, используя ключевое слово MAIL?
  47. 13. Как выполнять задачи Linux Cron кажду секунду, используя Crontab
  48. 14. Указание переменной PATH в Crontab
  49. 15. Установка Crontab из Cron-файла

Планирование заданий Cron с помощью Crontab

Cron — это демон планирования, который выполняет задачи через определенные промежутки времени. Эти задачи называются заданиями cron и в основном используются для автоматизации обслуживания или администрирования системы.

Например, вы можете настроить задание cron для автоматизации повторяющихся задач, таких как резервное копирование баз данных или данных, обновление системы с помощью последних исправлений безопасности, проверка использования дискового пространства , отправка электронных писем и т. Д.

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

Что такое файл Crontab

Crontab (таблица cron) — это текстовый файл, определяющий расписание заданий cron. Есть два типа файлов crontab. Общесистемные файлы crontab и файлы crontab отдельных пользователей.

Файлы crontab пользователей именуются в соответствии с именем пользователя, а их расположение зависит от операционной системы. В дистрибутивах на основе Red Hat, таких как CentOS, файлы crontab хранятся в каталоге /var/spool/cron , а в Debian и Ubuntu файлы хранятся в каталоге /var/spool/cron/crontabs .

Хотя вы можете редактировать пользовательские файлы crontab вручную, рекомендуется использовать команду crontab .

Файл /etc/crontab и сценарии в каталоге /etc/cron.d являются общесистемными файлами crontab, которые могут редактировать только системные администраторы.

В большинстве дистрибутивов Linux вы также можете помещать скрипты в каталоги /etc/cron. , и эти скрипты будут выполняться каждый hour/day/week/month .

Синтаксис и операторы Crontab

Каждая строка в пользовательском файле crontab содержит шесть полей, разделенных пробелом, за которым следует команда, которую нужно запустить.

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

  • * — Оператор звездочка означает любое значение или всегда. Если у вас есть символ звездочки в поле «Час», это означает, что задача будет выполняться каждый час.
  • , — Оператор запятая позволяет указать список значений для повторения. Например, если в поле «Час» указано 1,3,5 , задача будет выполняться в 1, 3 и 5 утра.
  • — — Оператор дефиса позволяет указать диапазон значений. Если в поле «День недели» указано 1-5 , задача будет выполняться каждый будний день (с понедельника по пятницу).
  • / — Оператор косой черты позволяет указать значения, которые будут повторяться через определенный интервал между ними. Например, если в поле «Час» стоит */4 , это означает, что действие будет выполняться каждые четыре часа. Это то же самое, что указать 0,4,8,12,16,20 . Вместо звездочки перед оператором косой черты вы также можете использовать диапазон значений, 1-30/10 означает то же, что и 1,11,21 .

Общесистемные файлы Crontab

Синтаксис общесистемных файлов crontab немного отличается от пользовательских файлов crontab. Он содержит дополнительное обязательное пользовательское поле, в котором указывается, какой пользователь будет запускать задание cron.

Предопределенные макросы

Есть несколько специальных макросов расписания Cron, используемых для определения общих интервалов. Вы можете использовать эти ярлыки вместо указания даты из пяти столбцов.

  • @yearly (или @annually ) — запускать указанную задачу один раз в год в полночь (12:00) 1 января. Эквивалентно 0 0 1 1 * .
  • @monthly — запускать указанную задачу один раз в месяц в полночь первого числа месяца. Эквивалентно 0 0 1 * * .
  • @weekly — запускать указанную задачу один раз в неделю в полночь в воскресенье. Эквивалентно 0 0 * * 0 .
  • @daily — запускать указанную задачу один раз в сутки в полночь. Эквивалентно 0 0 * * * .
  • @hourly — запускать указанную задачу один раз в час в начале часа. Эквивалентно 0 * * * * .
  • @reboot — запускать указанную задачу при старте системы (время загрузки).
Читайте также:  Как узнать какая у меня версия linux

Команда Linux Crontab

Команда crontab позволяет вам установить, просмотреть или открыть файл crontab для редактирования:

  • crontab -e — отредактировать файл crontab или создать его, если он еще не существует.
  • crontab -l — Показать содержимое файла crontab.
  • crontab -r — удалить текущий файл crontab.
  • crontab -i — удалить текущий файл crontab с запросом перед удалением.
  • crontab -u — редактировать файл crontab другого пользователя. Эта опция требует прав системного администратора.

Команда crontab открывает файл crontab с помощью редактора, указанного в EDITOR среды VISUAL или EDITOR .

Переменные Crontab

Демон cron автоматически устанавливает несколько переменных среды .

  • Путь по умолчанию установлен в PATH=/usr/bin:/bin . Если команда, которую вы выполняете, отсутствует в пути, указанном cron, вы можете использовать абсолютный путь к команде или изменить переменную cron $PATH . Вы не можете неявно добавить :$PATH как если бы это был обычный скрипт.
  • Оболочка по умолчанию — /bin/sh . Чтобы изменить другую оболочку, используйте переменную SHELL .
  • Cron вызывает команду из домашнего каталога пользователя. Переменная HOME может быть установлена в crontab.
  • Уведомление по электронной почте отправляется владельцу crontab. Чтобы перезаписать поведение по умолчанию, вы можете использовать MAILTO среды MAILTO со списком (через запятую) всех адресов электронной почты, на которые вы хотите получать уведомления по электронной почте. Если MAILTO определено, но пусто ( MAILTO=»» ), почта не отправляется.

Ограничения Crontab

Файлы /etc/cron.deny и /etc/cron.allow позволяют вам контролировать, какие пользователи имеют доступ к команде crontab . Файлы состоят из списка имен пользователей, по одному имени пользователя в строке.

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

Если файл /etc/cron.allow существует, только пользователи, перечисленные в этом файле, могут использовать команду crontab .

Если ни один из файлов не существует, только пользователи с правами администратора могут использовать команду crontab .

Примеры заданий Cron

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

Запускайте команду в 15:00 каждый день с понедельника по пятницу:

Запускать скрипт каждые 5 минут и перенаправлять стандартный вывод на dev null , только стандартная ошибка будет отправлена на указанный адрес электронной почты:

Выполняйте две команды каждый понедельник в 15:00 (используйте оператор && между командами):

Запускать PHP-скрипт каждые 2 минуты и записывать результат в файл :

Запускайте скрипт каждый день, каждый час, каждый час с 8 утра до 4 вечера:

Запускайте скрипт в первый понедельник каждого месяца в 7 утра.

Запускайте скрипт в 21:15 1 и 15 числа каждого месяца:

Установите пользовательские PATH HOME , PATH , SHELL и MAILTO и запускайте команду каждую минуту.

Выводы

Cron — это демон, который позволяет вам планировать задачи на определенную дату и время.

Не стесняйтесь оставлять комментарии, если у вас есть вопросы.

Источник

18 примеров команды crontab

Cron (Command Run ON) — утилита для автоматического запуска программ и скриптов на сервере в определённое время. Cron очень полезен для рутинных задач, таких как сканирование системы, ежедневное резервное копирование и т.д. Cron автоматически выполняет задания в бэкенде в указанное время. Управлять cron нужно с помощью crontab. В этой статье вы увидите 18 полезных примеров команды crontab.

Синтаксис Crontab

Crontab имеет шесть полей. 1-5 поля определяют дату и время исполнения. 6 поле используется для команды/скрипта. Синтаксис выглядит следующим образом:

  • * — соответствует чему угодно
  • День недели в другом формате: mon, tue, wed
  • Месяц в другом формате: jan, feb, mar
  • Несколько значений в поле: 1,5,7 или mon,fri
  • Диапазон: 1-10 или 20-30 или sun-fri или feb-apr
  • Несколько диапазонов: jan-mar,jul-sep

Как изменить расписание

Чтобы добавить или обновить задания в crontab, используйте команду ниже. Откроется текстовый файл с заданиями crontab, где их можно будет редактировать.

По умолчанию откроются задачи текущего пользователя. Для редактирования задач другого пользователя используйте команду:

Читайте также:  Удалил проигрыватель windows media

Как узнать список заданий Crontab

Для просмотра записей crontab текущего пользователя используйте команду:

Чтобы посмотреть список заданий другого пользователя, используйте -u:

Примеры

1. Ежедневно в 2 часа ночи.

Это будет полезно для ежедневного резервного копирования.

2. Дважды в день

Команда ниже будет выполняться в 5 утра и 5 вечера ежедневно.

3. Каждую минуту

4. Каждое воскресенье в 17:00

Пригодится для планирования еженедельных задач.

5. Каждые 10 минут

Если вы хотите запустить скрипт с интервалом в 10 минут, вы можете настроить его, как показано ниже. Может быть полезно для мониторинга.

6. Определенные месяцы

Иногда может понадобиться запланировать задачи только на некоторые месяцы. Ниже приведен пример скрипта, который будет запущен в январе, мае и августе.

7. Определенные дни

Если вам необходимо составить расписание выполнения задачи только на некоторые дни. Приведенный ниже пример будет выполняться каждое воскресенье и пятницу в 17:00.

8. Первое воскресенье каждого месяца.

Запланировать выполнение сценария только в первое воскресенье невозможно по параметру времени, но мы можем использовать условие в полях команд, чтобы сделать это.

9. Каждые четыре часа.

Если вы хотите запустить скрипт с интервалом в 4 часа:

10. Дважды в каждое воскресенье и понедельник.

Чтобы запланировать выполнение задачи дважды только в воскресенье и понедельник:

11. Несколько задач

Можно запланировать несколько задач в одной записи с помощью точки с запятой:

12. Ежегодно (@yearly)

@yearly равно «0 0 1 1 *». Задание будет выполняться в первую минуту каждого года. Можно отправить новогодние поздравления 🙂

13. Ежемесячно (@monthly)

@monthly равно «0 0 1 * *». Задание будет выполняться в первую минуту месяца.

14. Еженедельно (@weekly)

@weekly равно «0 0 1 * mon». Задание будет выполняться в первую минуту недели.

15. Ежедневно (@daily)

@daily равно «0 0 * * *». Задание будет выполняться в первую минуту каждого дня.

16. Ежечасно (@hourly).

@hourly равно «0 * * * *». Задание будет выполняться в первую минуту каждого часа.

17. Выполнение задач при перезагрузке системы (@reboot).

@reboot полезен для тех задач, которые вы хотите запустить при перезагрузке системы.

18. Отправка результатов заданий на электронную почту

Если вы хотите отправить вывод на почту, то это можно сделать, установив переменную MAIL, как показано ниже.

Источник

Задания cron для linux

MIN HOUR DOM MON DOW CMD

Таблица: Поля и допустимые диапазоны Crontab (синтаксис Linux Crontab)

Поле Описание Допустимое значение
MIN Минуты От 0 до 59
HOUR Часы От 0 до 23
DOM День месяца 1-31
MON Месяц 1-12
DOW День недели 0-6
CMD Команда Любая команда, которую требуется выполнить

1. Планирование задач в течение определённого времени

Основа использования cron – выполнение задач в определённое время, как показано ниже. Это будет выполнять скрипт полного резервного копирования (full-backup) 10 июня в 8.30.

Пожалуйста, обратите внимание, что поле времени использует 24-часовой формат, Так что 8 АМ – 8, 8 РМ – 20 часов.

  • 30 – 30-ая минута
  • 08 – 08 АМ
  • 10 – 10-й день
  • * – каждый день недели

2. Расписание задач для более частого выполнения (например, дважды в день)

Следующий скрипт использует дополнительное резервное копирование дважды в день каждый день. В этом примере выполняется дополнительное резервное копирование (incremental-backup) в 11:00 и в 16:00 каждый день. Значения через запятую в поле указывают, что команда должна быть выполнена в каждое указанное время.

00 – 0-ая минута (начало часа) 11, 16 – 11 и 16 часов * — каждый день * — каждый месяц * — каждый день недели

3. Расписание работы в течение определённого интервала времени (например, только в будние дни)

Если вы хотите, чтобы подпрограммы выполнялись в течение каждого часа с определённым интервалом времени, используйте следующее.

Подпрограмма Cron для каждого дня в течение рабочих часов

Этот пример каждый день проверяет состояние базы данных (включая выходные) в течение рабочих часов с 9 утра до 6 вечера.

00 — 0-ая минута (начало часа) 09-18 – 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 (часы) * — каждый день * — каждый месяц * — каждый день недели

Подпрограмма Cron для каждого рабочего дня в течение рабочих часов

Этот пример проверяет состояние базы данных каждый рабочий день (кроме субботы и воскресенья) с 9 утра до 6 вечера.

00 — 0-ая минута (начало часа) 09-18 – 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 (часы) * — каждый день * — каждый месяц 1-5 — Понедельник, Вторник, Среда, Четверг и Пятница (каждую неделю)

4. Как просмотреть записи Crontab?

Просмотр текущих Crontab-файлов пользователя.

Чтобы просмотреть ваши файлы crontab-l из вышей учётной записи unix, проделайте следующее.

Просмотр root записей crontab

Залогиньтесь в качестве root пользователя ( su — root ) и выполните crontab-l как показано ниже.

Практические рекомендации crontab: просмотрите другие записи crontab пользователя linux.

Чтобы посмотреть файлы других пользователей, залогиньтесь в качестве root пользователя и и используйте -u < имя пользователя >-l как показано ниже.

5. Как редактировать записи crontab?

Редактирование текущих пользовательских cron-записей.

Чтобы редактировать записи, используйте cronab -e как показано ниже. По умолчанию, будут редактироваться текущие записи crontab пользователя.

Когда вы сохраните файл, он сохранит crontab и покажет следующее сообщение, где будет сказано, что crontab успешно изменён.

Редактирование root записей crontab

Залогиньтесь как root пользователь ( su — root ) и сделайте crontab -e , как показано ниже.

Редактирование записей crontab-файла другого пользователя

Чтобы отредактировать запись crontab другого пользователя Linux, залогиньтесь в под root и используйте -u < имя пользователя >–е , как показано ниже.

6. Выполнение Cron каждую минуту

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

* — означает возможную единицу – то есть, каждую минуту каждого часа в течение года. Кроме того, использование * напрямую, окажется более полезной функцией в следующих примерах.

Указание */5 в поле минут означает каждые 5 минут. Указание 0-10/2 в поле минут означает каждые 2 минуты в первых 10 минутах. Таким образом, данная условность может быть использована во всех 4 полях.

7. Запуск фоновых задач Cron каждые 10 минут

Используйте следующее, если хотите проверять место на диске каждые 10 минут.

Эта задача выполняет указанную команду проверки диска каждые 10 минут на протяжении года. Но вам может потребоваться выполнение проверки только в рабочие часы или наоборот. Приведённые выше примеры показывают, как это сделать.

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

Существуют особые условия, когда вместо 5 полей вы можете использовать @ и далее ключевое слово – такие как перезагрузка, полночь, ежегодно, ежечасно.

Специальные ключевые слова Cron и их значение

Ключевое слово Эквивалент
@yearly 0 0 1 1 *
@daily 0 0 ***
@hourly 0 ****
@reboot Запуск системы

8. Расписание работы для первой минуты каждого года с использованием @yearly

Если вы хотите, чтобы cron задача выполнялись в первые минуты каждого года, то можете использовать ключевое слово @yearly , как это показано ниже. В стаком случае система будет выполнять ежегодное техническое обслуживание, используя скрипт ежегодного тех.обслуживания в 00:00 1 января каждого года.

9. Запуск задач каждый месяц с использованием ключевого слова @monthly

Оно схоже со словом @yearly , приведённым выше. Но команда выполняется ежемесячно. Команда будет выполнять резервное копирование в 00:00 первого числа каждого месяца.

10. Запуск задач каждый день с использованием @daily

Используя ключевое слово @daily , будет ежедневно создаваться лог-файл очистки журнала в 00:00 каждый день.

11. Как выполнить команду Linux после каждой перезагрузки, используя @reboot?

Используя ключевое слово @reboot , будет выполняться указанная команда каждый раз после загрузки системы.

13. 12. Как отключить/перенаправить исходящую почту Crontab, используя ключевое слово MAIL?

По умолчанию crontab отправляет выходные (output) задачи пользователю, который установил эту задачу. Если вы хотите перенаправить их другому пользователю, добавьте или обновите переменную MAIL в crontab, как показано ниже.

Если вы хотите, чтобы почта вообще не отправлялась, т.е прекратить отправку выходных файлов crontab, добавьте или обновите переменную MAIL в crontab, как показано ниже.

13. Как выполнять задачи Linux Cron кажду секунду, используя Crontab

Вы не можете настроить выполнение cron на каждую секунду. Потому что минимальная единица выполнения cron – минута. В обычном сценарии нет необходимости запускать выполнение cron каждую секунду.

14. Указание переменной PATH в Crontab

Во всех вышеприведённых примерах мы указывали абсолютный путь команды Linux или скрипта оболочки, которые должны быть выполнены.

Например, вместо указания /home/developer/tape-backup , если вы хотите указать только tape-backup , добавьте путь /home/developer к переменной PATH в crontab , как показано ниже.

15. Установка Crontab из Cron-файла

Вместо прямого редактирования файла crontab вы можете добавить, все записи в cron-файл. Если в файле есть эти записи, вы можете выгрузить или установить их в cron, как показано ниже.

Источник

Читайте также:  Как установить woff шрифт windows
Оцените статью