- 18 примеров команды crontab
- Синтаксис Crontab
- Как изменить расписание
- Как узнать список заданий Crontab
- Примеры
- 1. Ежедневно в 2 часа ночи.
- 2. Дважды в день
- 3. Каждую минуту
- 4. Каждое воскресенье в 17:00
- 5. Каждые 10 минут
- 6. Определенные месяцы
- 7. Определенные дни
- 8. Первое воскресенье каждого месяца.
- 9. Каждые четыре часа.
- 10. Дважды в каждое воскресенье и понедельник.
- 11. Несколько задач
- 12. Ежегодно (@yearly)
- 13. Ежемесячно (@monthly)
- 14. Еженедельно (@weekly)
- 15. Ежедневно (@daily)
- 16. Ежечасно (@hourly).
- 17. Выполнение задач при перезагрузке системы (@reboot).
- 18. Отправка результатов заданий на электронную почту
- Как запускать задания Cron каждые 5, 10 или 15 минут
- Синтаксис и операторы Crontab
- Запускать задание Cron каждые 5 минут
- Запускать задание Cron каждые 10 минут
- Запускать задание Cron каждые 15 минут
- Выводы
- НАСТРОЙКА CRON
- НАСТРОЙКА CRON
- Введение
- Базовая настройка CRON
- Настройка cron для web программистов
- Список всех задач cron у всех пользователей в Linux
- ОТЛАДКА РАБОТЫ 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, где их можно будет редактировать.
По умолчанию откроются задачи текущего пользователя. Для редактирования задач другого пользователя используйте команду:
Как узнать список заданий 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 каждые 5, 10 или 15 минут
Задание cron — это задача, которая выполняется через определенные промежутки времени. Задачи можно запланировать для запуска по минуте, часу, дню месяца, месяцу, дню недели или любой их комбинации.
Задания Cron обычно используются для автоматизации обслуживания или администрирования системы, таких как резервное копирование баз данных или данных, обновление системы с использованием последних исправлений безопасности, проверка использования дискового пространства , отправка электронных писем и т. Д.
Запуск задания cron каждые 5, 10 или 15 минут — одни из наиболее часто используемых расписаний cron.
Синтаксис и операторы Crontab
Crontab (таблица cron) — это текстовый файл, определяющий расписание заданий cron. Файлы Crontab можно создавать, просматривать , изменять и удалять с помощью команды crontab .
Каждая строка в пользовательском файле crontab содержит шесть полей, разделенных пробелом, за которым следует команда, которую нужно запустить:
Первые пять полей (время и дата) также принимают следующие операторы:
- * — оператор звездочки означает все допустимые значения. Если у вас есть символ звездочки в поле Минуты, это означает, что задача будет выполняться каждую минуту.
- — — Оператор дефиса позволяет указать диапазон значений. Если вы установите 1-5 в поле «День недели», задача будет запускаться каждый будний день (с понедельника по пятницу). Диапазон является включительным, что означает, что первое и последнее значения включены в диапазон.
- , — Оператор запятой позволяет определить список значений для повторения. Например, если в поле «Час» указано 1,3,5 , задача будет выполняться в 1, 3 и 5 утра. Список может содержать отдельные значения и диапазоны, 1-5,7,8,10-15
- / — оператор косой черты позволяет указать значения шага, которые можно использовать вместе с диапазонами. Например, если в поле «Минуты» указано 1-10/2 , это означает, что действие будет выполняться каждые две минуты в диапазоне 1–10, как и при указании 1,3,5,7,9 . Вместо диапазона значений вы также можете использовать оператор звездочки. Чтобы указать задание, которое будет запускаться каждые 20 минут, вы можете использовать «* / 20».
Синтаксис общесистемных файлов crontab немного отличается от пользовательских файлов crontab. Он содержит дополнительное обязательное пользовательское поле, в котором указывается, какой пользователь будет запускать задание cron.
Чтобы отредактировать файл crontab или создать его, если он не существует, используйте команду crontab -e .
Запускать задание Cron каждые 5 минут
Есть два способа запускать задание cron каждые пять минут.
Первый вариант — использовать оператор запятой для создания списка минут:
Вышеприведенная строка синтаксически верна и будет работать нормально. Однако ввод всего списка может быть утомительным и подверженным ошибкам.
Второй вариант указать задание, которое будет запускаться каждые 5 минут часов, — это использовать оператор step:
*/5 означает создание списка всех минут и запуск задания для каждого пятого значения из списка.
Запускать задание Cron каждые 10 минут
Чтобы запускать задание cron каждые 10 минут, добавьте в файл crontab следующую строку:
Запускать задание Cron каждые 15 минут
Чтобы запускать задание cron каждые 15 минут, добавьте в файл crontab следующую строку:
Выводы
Мы показали вам, как запускать команду cron каждые 5, 10 или 15 минут.
Не стесняйтесь оставлять комментарии, если у вас есть вопросы.
Источник
НАСТРОЙКА CRON
НАСТРОЙКА CRON
Введение
Cron — один из часто используемых инструментов для Unix-систем. Его используют для планирования выполнения команд на определённое время. Эти «отложенные» команды или задания принято называть «Cron Jobs». Такой инструмент отлично подходит для регулярных бэкапов, мониторинга дискового пространства, удаления файлов (например, логов) и много чего ещё. В этой статье будет рассказано о работе с Cron на Linux.
Базовая настройка CRON
Шаблон задания для Cron выглядит примерно так:
Вот иллюстрация этого же шаблона, которую можно сохранить себе:
минута час день месяц день_недели /путь/к/исполняемому/файлу
Звёздочками обозначены конкретные блоки времени.
Для отображения содержимого crontab-файла текущего пользователя используйте команду:
Для редактирования заданий пользователя есть команда:
Ниже приведены несколько примеров cron-заданий:
- Чтобы выполнять команду каждую минуту, задание должно быть такое:
- Похожее задание, только команда будет вызываться каждые пять минут:
- Вызывать команду 4 раза в час (каждые 15 минут):
- Чтобы выполнить команду каждый час в 30 минут, пишем:
Т. е. команда будет выполняться не каждые 30 минут, а тогда, когда значение минут будет равно 30 (например, 10:30, 11:30, 12:30 и т. д.).
Ещё существуют готовые задания:
Чтобы выполнять команду каждый раз после перезапуска сервера, используйте это задание:
Команда для очистки всех заданий текущего пользователя:
Настройка cron для web программистов
1. Добавляем в cron задачу, которая будет выполнятся каждую минуту.
Набираем crontab -e и добавляем (будет выполняться под тем пользователем под кем вы зашли в SSH)
*/1 * * * * /usr/bin/php -q /server/cron/cron.php > /dev/null 2>&1
сохраняемся (SHIFT+Z 2раза )
Примечаие:
*/1 * * * * — означает что скрипт будет запускаться каждую минуту
> /dev/null — означает отправку результатов, которые выдаст скрипт, в никуда.
2>&1 — избавляет администратора сервера от писем, если скрипт закончит работу с ошибками
2. для отправки на почту воспользуемся mutt (почтовый клиент)
2.1. apt-get install mutt
2.2. Набираем crontab -e и добавляем
0 */1 * * * /usr/bin/php -q /server/cron/cron.php > /server/cron/cron.txt && mutt my@email.com -s cron-result Фактически, Cron — это сервис, как и большинство других сервисов Linux, он запускается при старте системы и работает в фоновом режиме. Его основная задача выполнять нужные процессы в нужное время. Существует несколько конфигурационных файлов, из которых он берет информацию о том что и когда нужно выполнять. Сервис открывает файл /etc/crontab (тут могут быть тоже прописаны задачи) и они не будут отображаться по команде crontab – l
Так же существует anacron (anachronistic cron или асинхронный (анахроничный) cron) и его запуск и его задания тоже нужно учитывать, см. файл /etc/anacrontab и каталоги /etc/cron.daily/, /etc/cron.hourly/, /etc/cron.monthly/ и /etc/cron.weekly/
Часто, в современных дистрибутивах там прописан запуск утилиты run-parts, которая запускает нужные скрипты из следующих папок:
§ /etc/cron.minutely — каждую минуту;
§ /etc/cron.hourly — каждый час; ( cat /etc/cron.d/0hourly — тут настроен)
§ /etc/cron.daily — каждый день;
§ /etc/cron.weekly — каждую неделю;
§ /etc/cron.monthly — каждый месяц.
Список всех задач cron у всех пользователей в Linux
1. /etc/crontab (можно посмотреть глазами cat /etc/crontab)
2. Клиентский crontab ( crontab -u user -l)
3. /etc/anacrontab (можно посмотреть глазами cat /etc/anacrontab)
4. /etc/cron.d/ (Кроме того, cron считывает файлы в каталоге /etc/cron.d/)
5. /etc/cron.daily/ Запуск всех скриптов один раз в день
6. /etc/cron.hourly/ Запуск всех скриптов один раз в час
7. /etc/cron.monthly/ Запуск всех скриптов один раз в месяц
8. /etc/cron.weekly/ Запуск всех скриптов один раз в неделю
Для того чтобы пройти руками все клиентские Клиентский crontab ( crontab -u user -l), можно автоматизировать для всех пользователей очевидно нужно взять список пользователей в системе из /etc/passwd и сделать для каждого пользователя crontab -u USERNAME -l, то есть:
for user in $( cut -d ‘:’ -f1 /etc/ passwd ); do crontab -u $user -l; done |
Недостаток этого решения очевиден:
1. Нужно всегда помнить эту команду.
2. Если у пользователя нет задач в планировщике то мы получим сообщение «no crontab for vasua» и таких сообщений может быть десятки если у вас много пользователей — это неудобно.
3. Вывод информации неудобно читать.
Решение простое — создадим функцию allcrontab в файле
/.bashrc для ввода информации в более удобном виде:
# Определим цвета вывода |
red= ‘\e[0;31m’ |
RED= ‘\e[1;31m’ |
green= ‘\e[0;32m’ |
GREEN= ‘\e[1;32m’ |
NC= ‘\e[0m’ |
# Определим нашу функцию вывода списка всех задач cron у всех пользователей |
function allcrontab() < |
for user in $( cut -d ‘:’ -f1 /etc/ passwd ); do |
usercrontab=$( crontab -l -u $ |
if [ -n «$ |
echo -e «$ |
crontab -l -u $ |
echo -e «$ |
fi |
done |
> |
/.bashrc или перелогиниваемся и выполняем в консоле allcrontab и видим красивый вывод списка всех задач cron у всех пользователей:
Но это не финишная прямая, а только начало, ведь опытный системный администратор знает, что кроме вывода списка заданий командой crontab -l -u USER есть еще задания планировщика в каталоге /etc/cron.d/ и это тоже нужно учитывать, потому что например панель хостинга ISPConfig сохраняет задания cron в каталоге /etc/cron.d/ с именами ispc_webXXX, где webXXX — это логин системного пользователя, например web30 и вывод crontab -l -u web30 нам скажет «no crontab for web30», а на самом деле в файле /etc/cron.d/ispc_web30 может быть такая картина:
SHELL= ‘/bin/sh’ |
*/2 * * * * web30 /usr/bin/php -f /var/www/mysite.ru/web/yii cron -origin/index |
ОТЛАДКА РАБОТЫ cron
После того как вы настроили правила, еще хотелось бы проверить работают ли они. Для этого ждем того времени, когда скрипт уже должен быть выполнен и смотрим лог cron. Обычно он находится в /var/log/cron
Если нужно проверить скрипт, который находится в одной из специализированных папок, то тут еще проще, просто запустите run-paths, передав ей в параметр нужную папку или даже сам скрипт:
Источник