<Предыдущая | Содержание: | Следующая>
Хорошей идеей будет выбрать необычное время выполнения, поскольку системные задания часто выполняются в «круглые» часы, как вы можете видеть в разделе 4.4.4 следующего раздела. Например, задания часто запускаются ровно в час ночи (например, индексирование системы для обновления стандартной базы данных местонахождения), поэтому ввод времени 1:0100 может легко замедлить работу вашей системы, а не запустить ее. Чтобы предотвратить одновременный запуск всех заданий, вы также можете использовать команду партия Команда, которая ставит в очередь процессы и равномерно передает работу из очереди в систему, предотвращая чрезмерный всплеск использования системных ресурсов. Дополнительную информацию смотрите на информационных страницах.
4.4.4. Cron и crontab
Система cron управляется крон демон. Он получает информацию о том, какие программы и когда они должны запускаться из записей crontab системы и пользователей. Только пользователь root имеет доступ к системным файлам crontab, тогда как каждый пользователь должен иметь доступ только к своим собственным файлам crontab. В некоторых системах (некоторые) пользователи могут не иметь доступа к функции cron.
При запуске системы демон cron выполняет поиск / var / spool / cron / для записей crontab, названных в честь учетных записей в / И т.д. / пароль, он ищет /etc/cron.d/ и он ищет / etc / crontab, затем использует эту информацию каждую минуту, чтобы проверить, нужно ли что-то сделать. Он выполняет команды от имени пользователя, которому принадлежит файл crontab, и отправляет по почте любой вывод команд владельцу.
В системах, использующих Vixie cron, задания, выполняемые ежечасно, ежедневно, еженедельно и ежемесячно, хранятся в отдельных каталогах в папке Vixie cron. / и т.д. для сохранения обзора, в отличие от стандартной функции UNIX cron, где все задачи записываются в один большой файл.
Пример файла crontab Vixie:
[root@blob /etc]# еще кронтаб SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root
ГЛАВНАЯ = /
# запускных частей
# команды для выполнения каждый час
01 * * * * корневые части запуска /etc/cron.hourly
# команды для выполнения каждый день
02 4 * * * корневые части запуска /etc/cron.daily
# команды для выполнения каждую неделю
22 4 * * 0 корневых частей запуска /etc/cron.weekly команд для выполнения каждый месяц
42 4 1 * * корневые части запуска /etc/cron.monthly
[root@blob /etc]# еще кронтаб SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root
ГЛАВНАЯ = /
# запускных частей
# команды для выполнения каждый час
01 * * * * корневые части запуска /etc/cron.hourly
# команды для выполнения каждый день
02 4 * * * корневые части запуска /etc/cron.daily
# команды для выполнения каждую неделю
22 4 * * 0 корневых частей запуска /etc/cron.weekly команд для выполнения каждый месяц
42 4 1 * * корневые части запуска /etc/cron.monthly
Альтернатива
Вы также можете использовать кронтаб -l команда для отображения crontabs.
Задаются некоторые переменные, и после этого происходит фактическое планирование, одна строка на задание, начиная с 5 полей времени и даты. Первое поле содержит минуты (от 0 до 59), второе определяет час исполнения (0-23), третье — день месяца (1-31), затем номер месяца (1-12). , последний — день недели (0–7, 0 и 7 — воскресенье). Звездочка в этих полях обозначает общий допустимый диапазон для поля. Списки разрешены; для выполнения задания с понедельника по пятницу введите 1-5 в последнее поле, для выполнения задания в понедельник, среду и пятницу введите 1,3,5.
Затем идет пользователь, который должен запустить процессы, перечисленные в последнем столбце. Приведенный выше пример взят из конфигурации Vixie cron, где root запускает программу. запчастей через регулярные промежутки времени, с соответствующими каталогами в качестве опций. В этих каталогах фактические задания, которые должны выполняться в запланированное время, хранятся в виде сценариев оболочки, например, этот небольшой сценарий, который запускается ежедневно для обновления базы данных, используемой разместить команда:
billy@ahost cron.daily]$ кот slocate.cron
#! / Bin / ш
Ренис +19 -p $$ >/dev/null 2>&1
/usr/bin/updatedb -f "nfs,smbfs,ncpfs,proc,devpts" -e \ "/tmp,/var/tmp, /usr/tmp,/afs,/net"
billy@ahost cron.daily]$ кот slocate.cron
#! / Bin / ш
Ренис +19 -p $$ >/dev/null 2>&1
/usr/bin/updatedb -f "nfs,smbfs,ncpfs,proc,devpts" -e \ "/tmp,/var/tmp, /usr/tmp,/afs,/net"
Предполагается, что пользователи должны редактировать свои crontabs безопасным способом, используя кронтаб -e команда. Это предотвратит случайное открытие пользователем более одной копии своего файла crontab. Редактор по умолчанию vi (см. главу 6, но вы можете использовать любой текстовый редактор, например гвим or Gedit если вам удобнее использовать редактор с графическим интерфейсом.
Когда вы выйдете, система сообщит вам, что установлен новый crontab.
Эта запись в crontab напоминает Билли ходить в свой спортивный клуб каждый четверг вечером:
Билли: ~> crontab -l
# НЕ РЕДАКТИРУЙТЕ ЭТОТ ФАЙЛ - отредактируйте мастер и переустановите.
# (/tmp/crontab.20264 установлен в воскресенье, 20 июля, 22:35:14 2003 г.)
Билли: ~> crontab -l
# НЕ РЕДАКТИРУЙТЕ ЭТОТ ФАЙЛ - отредактируйте мастер и переустановите.
# (/tmp/crontab.20264 установлен в воскресенье, 20 июля, 22:35:14 2003 г.)
# (Версия Cron -- $Id: chap4.xml,v 1.28 2007, 09:19:12 до Exp $)
38 16 * * 3 мэйла -s "спортивный вечер" билли
# (Версия Cron -- $Id: chap4.xml,v 1.28 2007, 09:19:12 до Exp $)
38 16 * * 3 мэйла -s "спортивный вечер" билли
После добавления новой запланированной задачи система сообщит вам, что установлен новый crontab. Вам не нужно перезапускать крон демон, чтобы изменения вступили в силу. В примере Билли добавлена новая строка, указывающая на сценарий резервного копирования:
Билли: ~> кронтаб -e
45 15 * * 3 мэйла -s "спортивный вечер" билли
4 4 * * 4,7 /home/billy/bin/backup.sh
<--написать и выйти-->
crontab: установка нового crontab Билли:~>
Билли: ~> кронтаб -e
45 15 * * 3 мэйла -s "спортивный вечер" билли
4 4 * * 4,7 /home/billy/bin/backup.sh
<--написать и выйти-->
crontab: установка нового crontab Билли:~>
Команда backup.sh скрипт выполняется каждый четверг и воскресенье. См. раздел 7.2.5 для ознакомления с сценариями оболочки. Имейте в виду, что вывод команд, если таковые имеются, отправляется по почте владельцу файла crontab. Если почтовая служба не настроена, вы можете найти вывод ваших команд в локальном почтовом ящике.
/вар/spool/почта/ , обычный текстовый файл.