cron
|
cron в демон-планировщик задач в UNIX-подобных операционных системах, использующийся для периодического выполнения заданий в определённое время. Регулярные действия описываются инструкциями, помещенными в файлы crontab, которые находятся в каталоге[1]:
/usr/spool/cron/crontabs
или
/var/spool/cron/crontabs
редактировать их вручную не рекомендуется, для этого используют команду crontab -e.
Основной файл конфигурации cron, /etc/crontab, выглядит примерно так:
# /etc/crontab: system-wide crontab # Unlike any other crontab you don't have to run the `crontab' # command to install the new version when you edit this file # and files in /etc/cron.d. These files also have username fields, # that none of the other crontabs do. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) #
[править] Замена текстового редактора для crontab
По умолчанию crontab использует vi в качестве текстового редактора. Сменить редактор можно командой
export EDITOR='mcedit'
или
export EDITOR='pico'
[править] crontab
Каждый пользователь системы имеет свой файл заданий crontab, в котором описано, в какое время и какие программы запускать от имени этого пользователя. Для редактирования файла crontab используется специальная одноименная программа crontab, позволяющая не прерывать процесс cron на время редактирования.
Для редактирования файла crontab вашего пользователя используется команда[2]:
crontab -e
Таблица crontab состоит из 6 колонок, разделяемых пробелами или табуляторами. Первые пять колонок задают время выполнения (Минута, Час, День, Месяц, День недели), в них может находиться число, список чисел, разделённых запятыми, диапазон чисел, разделённых тире или символ '*'. Все остальные символы в строке интерпретируются как выполняемая команда с её параметрами. Если команда отправляет какой-нибудь текст в стандартный вывод, этот текст отправляется по e-mail пользователю.
* * * * * выполняемая команда - - - - - | | | | | | | | | ----- День недели (0 - 7) (Воскресенье =0 или =7) | | | ------- Месяц (1 - 12) | | --------- День (1 - 31) | ----------- Час (0 - 23) ------------- Минута (0 - 59)
Пример файла crontab:
# как обычно, с символа '#' начинаются комментарии # в качестве командного интерпретатора использовать /bin/sh SHELL=/bin/sh # результаты работы отправлять по этому адресу MAILTO=paul@example.org # добавить в PATH PATH=$PATH:$HOME/bin #### Здесь начинаются задания # выполнять каждый день в 0 часов 5 минут, результат складывать в log/daily 5 0 * * * $HOME/bin/daily.job >> $HOME/log/daily 2>&1 # выполнять 1 числа каждого месяца в 14 часов 15 минут 15 14 1 * * $HOME/bin/monthly # каждый рабочий день в 22:00 0 22 * * 1-5 echo "Пора домой" | mail -s "Уже 22:00" john 23 */2 * * * echo "Выполняется в 0:23, 2:23, 4:23 и т. д." 5 4 * * sun echo "Выполняется в 4:05 в воскресенье" 0 0 1 1 * echo "С новым годом!" 15 10,13 * * 1,4 echo "Эта надпись выводится в понедельник и четверг в 10:15 и 13:15" 0-59 * * * * echo "Выполняется ежеминутно" 0-59/2 * * * * echo "Выполняется по четным минутам" 1-59/2 * * * * echo "Выполняется по нечетным минутам" # каждые 5 минут */5 * * * * echo "Прошло пять минут"
Пример Сrontab в Ubuntu 9.10
Редактируем от пользователя user
sudo crontab -e -u user
где user -пользователь от имени которого будет производиться запуск.
# m h dom mon dow command # Запускаю eMule ночью в 1 час ночи 10 минут 10 1 * * * export DISPLAY=:0 && amule # Останавливаю Emule утром в 10 часов 10 минут 10 10 * * * export DISPLAY=:0 && killall amule
'#' в является комментарием.
export DISPLAY=:0 && -Выводим на дисплей (если есть что выводить)
часто этого не достаточно для запуска графических приложений, для возможности локально подключаться к X серверу необходимо добавить
xhost +local:
в файл .profile находящийся в домашнем каталоге пользователя.
Стоит добавить, чтобы задачи выполнялись корректно, необходимо в конце файла с заданием оставить пустую строку, которая создается crontab по умолчанию.[3]
[править] Графический интерфейс
Для удобства пользователей во многих системах есть специальные программы графического интерфейса управления cron.
[править] Gnome Schedule
Для Debian-based дистрибутивов:
[править] Kcron
Kcron представляет собой KDE-интерфейс для редактирования конфигурационных файлов cron. Утилита запускается по Alt+F2, в окне редактирования можно указать мышью:
- полный путь к выполняемому файлу программы
- нужное время запуска программы
- переменные окружения, необходимые во время исполнения программы
Подробнее см. руководство пользователя (рус.)
[править] Сходные программы
- NnCron в наиболее продвинутый планировщик для Windows
- at в однократный запуск программ в заданное время.
- anacron в периодический запуск программ, не обязательно в точности в заданное время: например если в указанное в задании время машина была выключена
anacronвыполнит задание позже - inetd в запуск программ обслуживания сетевых запросов
- upstart в запуск программ обслуживания событий (обобщение cron, atd, anacron, inetd)
[править] Примечания
[править] Ссылки
- Man:cron в руководство по cron
- Планирование задач с помощью cron и at
- Небольшой FAQ по cron
- Использование CRON и команды crontab
- Шпаргалка по CRON
- Как запускать PHP-скрипты по расписанию используя CRON
| Стандартные программы UNIX (все программы) | |
|---|---|
| Файловые системы | chroot dd df fdisk fsck mkisofs mkswap mount umount rehash |
| Файлы и каталоги | cat chattr cd chmod chown chgrp cksum cmp cp diff du file fuser ln ls lsof mkdir mv od pwd rm rmdir split touch |
| Процессы | at cron exit kill killall nice nohup pgrep pidof pkill ps renice sleep time top wait watch |
| Пользователи | env finger id last logname mesg passwd su sudo uptime w wall who whoami write |
| Сеть | ftp host ifconfig netcat netstat nmap nslookup ping rlogin SSH traceroute wget |
| Тексты | AWK comm cut ed ex expand unexpand fmt head iconv join less more paste pr sed sort tac tail tr uniq wc xargs |
| Командная строка | alias basename bash bind dirname echo expr false printf test true unset |
| Поиск | find grep strings whereis which |
| Разное | banner bc cal date help lp man history size tee uname yes reboot |

