- Что такое 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]