втоматизация задач системного администрирования с помощью планировщика
Администраторы должны уметь использовать cron или anacron для запуска задач через определенные промежутки времени, и at для запуска задач в определенное время. Эти навыки включают в себя управление задачами cron и at, а также настройку доступа пользователей к службам cron и at.
Запланированные команды
В Linux имеется возможность назначать задачи:
к определенному времени, заданному относительно, к определенному времени, заданному абсолютно, через определенные промежутки времени.
Выполнить команду в определенное время
Программа at позволяет отложить выполнение программы.
Время можно задать относительным или абсолютным значением: at [options]
Например: [root@test /]# at -f script now+1 minutes _# Относительное время
[root@test /]# at -f script 4pm + 3 days_ # Относительное время
[root@test /]# at -f script 10am Dec 31_ # Абсолютное время
Для вывода списка запланированных задач используется atq: atq
Эта команда отобразит все запланированные задачи текущего пользователя.
Для root, команда выдаст список запланированных задач для всех пользователей.
Для удаления запланированной задачи используется atrm: atrm [jobnumber]
Выполнение команды через определенные интервалы времени
cron – это демон общего назначения, позволяющий пользователю запланировать периодическое выполнение некоторых задач.
Программа crontab позволяет пользователю устанавливать и удалять задачи.
Например: [root@test /]# crontab - # List the crontab jobs
[root@test /]# crontab -l # View the current jobs
[root@test /]# crontab -e # To edit the job lists
[root@test /]# crontab -r # To remove the current jobs
[root@test /]# crontab filejobs # Install some scheduled jobs
cron проверяет имеются ли задачи для выполнения один раз в минуту.
cron должен быть запущен из /etc/rc или /etc/rc.local, и он ищет файл crontab в каталоге /var/spool/cron.
Файл crontab
Формат файла crontab следующий: minute hour dayofmonth month dayofweek login action
minute:0-59, hour:0-23, day_of_month:1-31, month:1-12, day_of_week: 0-7
Первые 5 полей определяют время, в которое должна выполниться команда (при этом в дне недели 0 и 7 соответствуют воскресенью).
login существует только в общесистемном файле /etc/crontab и определяет, от чьего имени должна быть запущена команда. Если команда, указанная в расписании, выводит данные на консоль, то данный вывод будет выслан пользователю по электронной почте. action: Строка для выполнения (команда).
Пример пользовательского файла расписания:
0,15,30,45 9-18 * * 1-5 /home/john/job.sh
0 4 1 1 * /home/john/ny.sh
50 2 7 * * ~rus/bin/tar_sdb2.sh
В этом примере скрипт job.sh выполняется по будним дням каждые 15 минут с 9 часов утра до 18 часов вечера, а скрипт ny.sh будет выполнен в 4:00 первого января,
Скрипт tar_sdb2.sh будет выполняться в 2:50 ночи 7 числа каждого месяца.
Демон cron хорошо работает в системах, которые работают постоянно.
Если компьютер выключен в момент, когда нужно запустить программу, то эта программа после включения компьютера запущена не будет.
Для решения этой проблемы существует программа anacron.
При запуске anacron читает файл /etc/anacrontab.
SHELL=/bin/sh PATH=/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
1 2 cron.daily run-parts /etc/cron.daily 7 2 cron.weekly run-parts /etc/cron.weekly 30 50 cron.monthly run-parts /etc/cron.monthly
В строке с расписанием и командой четыре поля: 1-е поле.- Период - минимальное колличество дней, через которое будет выполнена комманда. 2-е поле.- Задержка- число минут от запуска anacron’a до запуска команды. 3-е поле. Идентификатор работы может быть любым, кроме пробела и символа «/».
4-е поле. Комманда. После выполнения работы anacron записывает дату в файл в каталоге /var/spool/anacron.
Имя файла соответствует идентификатору работы.
При дальнейших запусках anacron проверяет даты в этих файлах.
Работа выполняется, если с момента предыдущего запуска прошло как минимум то колличество дней, которое указано в /etc/anacrontab.
Весь вывод программы отправляется почтой пользователю запустившему anacron.
Как и cron, anacron обычно запускается автоматически, но можно и руками:
Можно запускать непосредственно, используя различные параметры:
Она гарантирует, что программа будет выполнена, но не гарантирует точное время её выполнения.
Обычно anacron запускается при старте системы, проверяет, прошло ли заданное количество дней с момента последнего запуска программы, и, если необходимо, запускает указанную команду.
Ограничение пользовательского доступа к службам at и cron
Избранным пользователям можно установить разрешение или запретить использование служб at или cron.
/etc/at.allow и /etc/at.deny
Пользователи, которым разрешено (запрещено) использовать at, перечислены в файлах /etc/at.allow и /etc/at.deny, соответственно.
Если файл /etc/at.allow существует, то at могут использовать только пользователи, перечисленные в нем.
Если же файл /etc/at.allow не существует, проверяется файл /etc/at.deny.
Любому пользователю, не упомянутому в этом файле, разрешено использовать at.
/etc/cron.allow и /etc/cron.deny
Пользователи, которым разрешено (запрещено) использовать cron, перечислены в файлах /etc/cron.allow и /etc/cron.deny, соответственно.
Если файл /etc/cron.allow существует, то cron могут использовать только пользователи, перечисленные в нем.
Если же файл /etc/cron.allow не существует, проверяется файл /etc/cron.deny. Любому пользователю, не упомянутому в этом файле, разрешено использовать cron.