• Что такое cron?

Сгоn автоматически запускает программы в заданное время.

  • Как он это делает?

Он просыпается раз в минуту и проверяет список заданий, ко­торые нужно запустить. Если для данной минуты есть какие-нибудь задания, он запускает их

  • Где хранится список заданий?

Он хранится в нескольких местах; основной системный файл — /etc/ crontab. Также есть удобные ката­логи /eic/cron.hourly. /etc/cron.daily

и т.д. Если скопировать в эти ката­логи любой скрипу то он будет за­пущен в соответствующее время.

  • Почему этих мест несколько?

Благодаря отдельным катало­гам пакеты могут устанавливать собственные задания сгоn, которые будут запускаться с регулярным интервалом; при этом в главном файле crontab определяется точное время их запуска,

  • Ежечасно, ежедневно, ежене­дельно и ежемесячно — разве и так не понятно?

Это интервалы запуска, а не время запуска, Скрипты в каждом катало­ге стоит запускать на разных мину­тах, чтобы не перегружать систему.

  • Как запускать мою собствен­ную программу, если эти файлы предназначены для системных заданий?

У каждого пользователя может быть собственный файл crontab, просмотреть который можно командой crontab -L Имя конфигу­рационного файла и названия про­граммы для редактирования этого файла одинаковы (crontab) —но не проклинайте нас,поскольку это придумали не мы!

  • Где находится мой файл crontab и как его изменить?

Для изменения файла испопьзуется команда crontab -е, которая за­гружает файл в предпочтитель­ный редактор. Она также проверяет синтаксис файла и сообщает про­грамме сгоn об изменениях после сохранения файла.

  • Что содержит файл crontab?

Для каждого задания выделена одна строка с шестью полями (в системном crontab полей семь). В первых пяти попях указывают­ся минута, час, день месяца, месяц и день недели, В последнем поле указывается команда для запуска. В системном crontab шестое по­ле — это пользователь, от имени которого запускается задание.

  • Сложновато… можете привести пример или пару примеров?

При указании строки 30 6 * * * / путь_к_программе программа бу­дет запускаться в 6:30 утра каждый день. Для запуска строки требуется соответствие всех полей; * означа­ет, что поле может принимать лю­бое значение. Если изменить пятое поле на 1 или  «Mon», задание будет запускаться только по понедельни­кам в 6:30 утра.

  • Можно ли запускать задачу несколько раз в день?

Конечно, При указании лю­бой из строк: 0 0,6,12,18 * * * / путь_к_программе или 0 74 * * * /путь_к_программе задание бу­дет запускаться каждые шесть часов в ровный час, но вторая строка удобнее для восприятия, Дополнительные примеры см, по man 5 crontab.

Администрирование и поддержка Linux/Unix серверов, [email protected]