cron

Гульельмо Маркони
Гульельмо Маркони
Читаю новости и кажется скоро наступит новое «покращення» в виде 12ч раб дня. Да и проблемы «семьи» и групы Приват тоже не радует(Игорь Валерьевич с легкостью уложит гривну, если допекут), У ярославского вот клуб забрали… С каждым годом все веселее и веселее в этой стране. убивает только безинициативность народа, они не хотят ничего менять, 12ч так 12ч, в морг так в морг. Но не будем о грустном, крон так крон:
Вот ничего нового не придумаю просто для себя запишу и все. Никогда не использовал в винде планировщик задач, а вот в никсах он мне почему то стал полезен, прям не знаю почему)


Утилита cron работает в фоновом режиме и постоянно проверяет файл /etc/crontab. Утилита cron проверяет также каталог /var/cron/tabs в поиске новых файлов crontab. Файлы crontab содержат информацию об определенных функциях, которые cron выполняет в указанное время.

Утилита cron использует два разных типа конфигурационных файлов, системный и пользовательский. Все различие между этими двумя форматами заключается в шестом поле. В системном файле шестое поля это имя пользователя, с правами которого будет запущена команда. Это позволяет запускать команды из системного crontab от любого пользователя. В пользовательском файле шестое поле указывает запускаемую команду, и все команды запускаются от пользователя, который создал crontab; это важно для безопасности.

# комментарий решеткой
# определяем переменные окружения
# Если переменная для оболочки не задана, cron использует оболочку по умолчанию, sh. 
# Если не задана переменная PATH, значение по умолчанию не устанавливается и пути
# к файлам должны быть полными. Если не задана переменная HOME, cron будет использовать
# домашний каталог соответствующего пользователя.
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin 
HOME=/var/log
#
#
#minute	hour	mday	month	wday	who	command 
#
#
*/5	*	*	*	*	root	/usr/libexec/atrun 
#Для рандомизации, используется в криптографических механизмах - SSH, SSL.
*/11    *       *       *       *       operator /usr/libexec/save-entropy

# Ротация лог-файлов каждый час, если это необходимо.
0       *       *       *       *       root    newsyslog

# Cодержимое каталога /etc/periodic/daily будет запускаться каждых 3 часа на первой минуте часа.
1       3       *       *       *       root    periodic daily

# Cодержимое каталога /etc/periodic/weekly будет запускаться каждую суботу на 15'ой минуте 4'го часа.
15      4       *       *       6       root    periodic weekly

# Содержимое каталога /etc/periodic/monthly будет запускаться каждый первый день месяца на 30'ой минуте 5'го часа.
30      5       1       *       *       root    periodic monthly

#Установите часовой пояс, если часы CMOS настроены по местному времени, в отличие от UTC времени
1,31    0-5     *       *       *       root    adjkerntz -a

Как же описывается само задание:
В строке всего семь полей. Их значения minute, hour, mday, month, wday, who (кто), и command.
minute это время в минутах, когда будет запущена команда.
hour означает то же самое для часов.
mday означает день месяца. month, это то же самое, что час и минута, но для месяцев.
wday это день недели.
Все эти поля должны быть в числовом формате, время в 24формате.
Поле who имеет специальное значение, и присутствует только в файле /etc/crontab. Это поле определяет пользователя, с правами которого должна быть запущена команда. Когда пользователь устанавливает собственный файл crontab, он не указывает этот параметр. Последний параметр command. Он указывает команду, которая должна быть запущена.
Пример:
Здесь задано значение */5, и несколько символов *. Эти символы * означают все(каждый). Таким образом, для этой строки соответствующая команда atrun вызывается под пользователем root каждые пять минут независимо от дня или месяца.
Команды могут принимать любое количество параметров; однако команды, состоящие из нескольких строк, должны быть объединены символом \

Этот формат одинаков для каждого файла crontab, за исключением одной детали. Шестое поле, где указано имя пользователя, присутствует только в файле /etc/crontab. Это поле должно быть исключено из crontab файлов пользователей.

Кроме того есть специальные временные метки:
@reboot Запускается 1 раз при старте крона.
@yearly Запускается раз в год, «0 0 1 1 *».
@annually (аналогично @yearly)
@monthly Запускается раз в месяц, «0 0 1 * *».
@weekly Запускается раз в неделю, «0 0 * * 0».
@daily Запускается раз день, «0 0 * * *».
@midnight (аналогично @daily)
@hourly запускается раз в час, «0 * * * *».

После правки системного крона, нужно лишь подождать, система все сделает сама)
Для установки пользовательского crona
% crontab crontab-file
crontab -l просмотр установленных файлов
crontab -e открывает пустой файл, Вы его редактируете, сохраняете и система сразу же его применяет.
crontab -r удалить cron файл.

!Не забывайте, что файлы которые мы будем запускать должны быть с правами на выполнение!!!


Комментарии: