Сценарии оболочки часто используются для соединения программ. Обычным примером в Linux является определение задач сгоп. Это стандартный планировщик задач Linux. Если вы хотите, чтобы чтолибо происходило каждую третью среду каждого месяца в «неприличное» время 01:23, то можете использовать сгоп, чтобы он делал это вместо вас без всякой негативной отдачи, которую вы получили бы от человека. Планировщик каждую минуту проверяет, не пришло ли время выполнить какуюлибо задачу.
Вы указываете задачи сгоп, исправляя файл crontab. Вы можете просмотреть содержимое этого файла, если он хранит следующую информацию:
admin@serverl:$ crontab 1 no crontab for admin
Для исправления файла crontab введите следующее:
admin@serverl:~$ crontab e
Каждая строка файла содержит указание дня/времени и команды в таком формате:
минута час день_месяца месяц день_недели команда
Рассмотрим аргументы команды. О минута — значение находится между 0 и 59.
О час — используется 24часовой формат времени, значение находится между 0 и 23.
О день_месяца — значение находится в области от 1 до 31. О меся/у — это число между 1 и 12 или название месяца, например February. О день_недели — число между 0 и 7 (0 и 7 — это воскресенье, 6 — это суббота) или
название дня недели, например Tuesday. О день_месяца и день_недели связаны отношением ИЛИ, что может преподносить сюрпризы. Например, если каждое из полей содержит значение 1, сгоп будет выполнять команду каждый день в январе и по понедельникам в дальнейшие месяцы. Обычно в crontab указывается значение только для одной из этих величин.
О В любом поле значение указывает полное совпадение; например 1 в поле месяц
означает только январь. О Звездочка (*) означает любое значение.
О Два значения, разделенные дефисом, определяют область. Тогда 1112 в поле
месяц означает промежуток с ноября по декабрь. О Для указания нескольких значений разделите их запятыми. Список месяц 2,3,56
означает февраль, март и промежуток с мая по июнь. О За модификатором шагов могут следовать значения и символ слэша, за которым указывается, через какой промежуток нужно определять значения. Значение месяц, равное */3, определяет каждый третий месяц. Значение месяц 49/2 определяет месяцы 4, 6 и 8.
Оболочка выполняет команду, таким образом, можно использовать возможности, указанные в этой главе. Рассмотрим некоторые примеры применения прямых команд, не являющихся сценариями:
5 * * * * гш /tmp/*.gif # remove all GIF files every 5 minutes 5 * * * * rm v /tmp/*.gif » /tmp/gif.log # the same, logged
Если планировщик сгоп выполняет команду, он пересылает ее стандартный вывод по электронной почте и стандартную ошибку — владельцу файла crontab. Чтобы избежать участи быть заваленным такой почтой, вы можете перенаправить стандартный вывод и стандартные ошибки куданибудь в другое место:
command > /dev/null 2>&1