Cron
Cron - демон для автоматического запуска команд. Скрипты с командами могут находится находятся в:
- /etc/cron.daily -- запускается ежедневно
- /etc/cron.hourly -- ежечасно
- /etc/cron.monthly -- ежемесячно
- /etc/cron.weekly -- еженедельно
- /etc/crontab -- системный
Пользовательские скрипты хранятся в:
- /var/spool/cron/ -- crontab пользователей ОС
Для работы с расписаниями запуска скриптов используется команда crontab
- crontab -e -- редактировать таблицу задач, будет использоваться редактор, указанный в переменной окружения EDITOR, если не хочется с ним связываться, то можно сформировать файл в любом редакторе и загрузить (см. ниже)
- crontab -l -- показать таблицу задач
- crontab -r -- удалить таблицу задач
- crontab path/to/file.crontab -- загрузить таблицу задач из файла
Формат записей crontab:
минута (0-59), | час (0-23), | | день месяца (1-31), | | | месяц в году (1-12), | | | | день недели (0-6, где 0=7=воскресенье). | | | | | имя-пользователя комманда
Пример задания, запускаемого от имени пользователя ivan в 2:10 каждую среду:
10 2 * * 3 ivan /path/to/script
Если редактируется crontab пользователя (например командой 'crontab -e'), то имя пользователя указывать не надо. Пример: задача script будет выполнятся с параметрами -a -b каждый час в 15 минут с перенаправлением вывода в журнал:
15 * * * * /path/to/script -a -b > /tmp/cron-output.log
Вместо цифер можно использовать звёздочку (*), что озанчает любое из возможных значений, т.е. каждую минуту, каждый час и т.д. Можно определить другую периодичность, если после звёздочки указать косую черту и число, т.е.
- */5 * * * * -- каждые 5 минут
- * */2 * * * -- каждые 2 часа
Чтобы получать результаты работы crontab по почте (полезно при отладке) указываем в начале файла перед всеми задачами:
MAILTO=admin@mynetwork.ru
Если же не хотим получать ничего, то там же указываем:
MAILTO=/dev/null
Можно использоваться переменные
Переменная | Значение | Выполнение команды... |
---|---|---|
@reboot | - | при загрузке операционной системы |
@yearly | 0 0 1 1 * | ежегодно в полночь 1-го января |
@annually | 0 0 1 1 * | ежегодно в полночь 1-го января |
@monthly | 0 0 1 * * | ежемесячно в полночь 1-го числа |
@weekly | 0 0 * * 0 | в полночь каждое воскресенье |
@daily | 0 0 * * * | ежедневно в полночь |
@midnight | 0 0 * * * | ежедневно в полночь |
@hourly | 0 * * * * | в начале каждого часа |