
Создать cron задание
Кронтаб это список команд, которые вы хотите запустить по расписанию. Cron — системный процесс, который будет автоматически выполнять задачи, для вас в соответствии с установленным графиком. В своей теме «создать cron задание» я расскажу как создавать различные расписания для разных нужд.
Мне нужно было создать крон задание, которое бы раз в час генерировало отчет о свободном месте на дисках и отсылало этот отчет на email. Делается это очень просто:
Нужно отредактировать кронтаб и добавить ему новое задание (в виде скрипта или как у меня — строка с командой):
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Вышеустановленный крон запустит `execute_this` в 5:30 утра каждые три дня, но предположим что у нас Новый Год. Когда будет запускаться крон, 1 января? Вообще-то, нет. Это будет выполнен 3-го января.
«*/3» можно рассматривать как «любого числа которые делится на три». Это означает, что он всегда будет работать 3-го, 6-го, 9-го и т.д. Это хорошо если данный крон подходит, но а если вам нужно чтобы он запускался 1-го, 4-го и т.д. Как мы это делаем?
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Этот кронджоб выполниться с 1-го до 31 (включительно). Это, как мы получаем смещение, чтобы начать на 1-ом.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Теперь я просто проверяю, если это равномерно делится на три по модулю, который возвращает остаток от деления:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Так что, если этот расчет равен нулю, у нас есть «победитель»:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Помните, нам нужно смещение, так что мы начинаем c 1-го числа. Так оно и есть в настоящее время, и крон запускается с 3-го. Только путем вычитания одного дня с года можно получить все желаемое:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
И так, финишнай КРОН будет выглядеть так:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Вот такой финт ушами Идем далее и узнаем больше о кроне
- /etc/cron.d/ — настройки крона.
- /etc/cron.hourly/ — скрипты которые выполняются каждый час.
- /etc/cron.daily/ — скрипты которые выполняются каждый день.
- /etc/cron.weekly/ — скрипты которые выполняются каждую неделю.
- /etc/cron.monthly/ — скрипты которые выполняются каждый месяц.
- /etc/crontab — настройки крона.
- минуты 0-59
- Часы 0-23
- День месяца 1-31
- месяц 1-12
- День недели 0-7 (0-Вс, 1-ПН, 2-Вт, 3-Ср, 4-чт, 5-пт, 6-Сб, 7-вс)
<img loading=»lazy» class=»aligncenter size-full wp-image-329″ src=»http://linux-notes.org/wp-content/uploads/2014/01/cron1.png» alt=»cron1″ width=»494″ height=»231″ srcset=»https://linux-notes.org/wp-content/uploads/2014/01/cron1.png 494w, https://linux-notes.org/wp-content/uploads/2014/01/cron1-300×140.png 300w» sizes=»(max-width: 494px) 100vw, 494px» />
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Пример, следующий крон, выполнит задание раз в день:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
- Звездочка (*) : Этот оператор определяет все возможные значения для поля. Например, звездочка в поле час будет выплнять крон каждый час, если стоит звездочка в поле месяц, то будет задание выполняться каждого месяц.
- Запятая (,) : Этот оператор определяет список значений, например: «1,5,10,15,20, 25».
- Тире (–) : Этот оператор определяет диапазон значений, например: «5-15» дней, что эквивалентно вводу с помощью оператора запятая — «5,6,7,8,9, …, 13,14,15.» .
- Сепаратор или слеш (/) : Этот оператор определяет значение шага, например: «0-23/» может быть использован в поле часов, чтобы указать выполнение команды каждый последующий час. Шаги также разрешается после звездочки, так что если вы хотите указать выполнение командскриптов через каждые два часа, то просто используйте */2.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Безопасность в cron
- /etc/cron.deny
- /etc/cron.allow
- /etc/hosts.allow
- /etc/hosts/deny
Можете легко проверить, какие файлы, принадлежат к cron- у:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Опции в crontab
-u
Добавьте имя пользователя от которого он будет запускаться. Если эта опция не указана, то кронтаб рассматривает «свой» кронтаб (т.е. кронтаб будет запускаться от текущего пользователя и выполнять команду). Обратите внимание, что «su» может запутать кронтаб и вы всегда должны использовать опцию -u для безопасности.
-l
Показать текущий кронтаб.
-r
Удалить текущий кронтаб.
-e
Редактировать текущий кронтаб, с помощью редактора ( визуального или редактора в переменном окружении).
-i
То же что и опция «-r», но дает пользователю выбора «Y/n» перед удалением в crontab.
-s
Только SELinux: добавляет текущий SELinux контекст безопасности (строку MLS_LEVEL) к файлу кронтаб до редактирования или замены.
бекапы cronjob
Так же, можно создавать бэкапы:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Создать cron задание — очень просто!
Было ли это полезно?
0 / 0