CFA LogoCFA Logo Computer
Новости Статьи Магазин Драйвера Контакты
Новости
RSS канал новостей
В конце марта компания ASRock анонсировала фирменную линейку графических ускорителей Phantom Gaming. ...
Компания Huawei продолжает заниматься расширением фирменной линейки смартфонов Y Series. Очередное ...
Компания Antec в своем очередном пресс-релизе анонсировала поставки фирменной серии блоков питания ...
Компания Thermalright отчиталась о готовности нового высокопроизводительного процессорного кулера ...
Компания Biostar сообщает в официальном пресс-релизе о готовности флагманской материнской платы ...
Самое интересное
Программаторы 25 SPI FLASH Адаптеры Optibay HDD Caddy Драйвера nVidia GeForce Драйвера AMD Radeon HD Игры на DVD Сравнение видеокарт Сравнение процессоров

АРХИВ СТАТЕЙ ЖУРНАЛА «МОЙ КОМПЬЮТЕР» ЗА 2003 ГОД

Пингвин на автопилоте

Сергей ПАРИЖСКИЙ heel-adm@yandex.ru

В этой статье я хочу показать как, используя демон cron и другие программы планирования расписаний в Linux, можно автоматизировать многие задачи системного администрирования и успешно поддерживать систему в работоспособном состоянии.

Демон cron

Думаю, следует напомнить, что демон — это программа, которая запускается сценарием при загрузке Linux. В нашем случае это демон cron, который запускается из /etc/rc.d/init.d. Программа crond выполняется в фоновом режиме и проверяет ряд файлов. Первый из них —crontab в каталоге /etc. Часть содержимого каталога /etc видна на Рис. 1, фрагмент файла crontab — на Рис. 2 (скоро он у вас будет выглядеть совсем иначе). Как видите, это список команд, выполняющихся ежечасно, ежедневно, еженедельно и ежемесячно. Команда cronloop — сценарий оболочки; он выполняет поиск в каталоге /etc/cron.d, а затем запускает назначенные задачи согласно содержимому файлов, найденных в подкаталогах Monthly, Weekly, Daily и Hourly каталога /etc/cron.d. Действительный сценарий оболочки находится в подкаталоге lib каталога /etc/cron.d.

Рис. 1.   Рис. 2.

Чтобы не быть голословным, советую взглянуть на файл 50update-lacatedb в каталоге Daily, который связан со сценарием оболочки update-locatedb в каталоге /etc/cron.d/lib. Этот сценарий оболочки, в соответствии с ранее приведенной записью Daily файла /etc/crontab, ежедневно в 5:50 утра создает новую базу данных locate (см. Рис. 3).

Рис. 3.

Как видите, этот сценарий выполняет команду updatedb для создания базы данных locate. Кроме того, команда cron ищет личные файлы crontab с именами пользователей в каталоге /var/spool/cron. Эти файлы создаются командой crontab, находятся в каталоге /usr/bin и используются пользователями для создания расписаний выполнения их собственных регулярных задач (это нам и нужно :-)).

Файл /etc/crontab предназначен для поддержки расписания регулярных общественных задач. Однако Linux позволяет пользователям создавать собственные расписания cron. Положим, будучи root-оператором, вы хотите предоставить пользователям возможность применить команду crontab для создания личных файлов cron в каталоге /etc/cron.deny. Для этого в файле /etc/cron.allow введите имя root-оператора, корневой каталог и имена любых пользователей, которым хотите предоставить доступ к демону cron. Поскольку ни один из этих файлов по умолчанию не устанавливается при инсталляции Linux (по крайней мере в AltLinux и OpenLinux дела обстоят именно так), все пользователи имеют личный доступ к личным файлам cron. Вы можете лично создать файлы для пользователей с помощью команды crontab, а можете предоставить им проделать это самостоятельно. Всегда используйте опцию командной строки -u команды crontab. Если запустить команду crontab при работе root (после выполнение команды su) и не использовать эту опцию, появится сообщение об ошибке!

Формат записи файла crontab подробно описан в разделе 5 manual’a, вызывающегося командой man 5 crontab. Приведу несколько примеров. В общем случае запись файла crontab содержит следующие поля:

Обычно записи разделяются пробелом, но cron-записи в файле /etc/crontab должны содержать имя пользователя, вставленное между полями дня недели и команды. Поле имени пользователя не требуется для записей личного файла crontab.

Например, если Linux запускается на портативном компьютере, но оказывается, что системное время Linux сбивается после выхода портативного компьютера из режима экономии питания, отредактируйте файл /etc/crontab и вставьте команду для ежеминутного обновления системного времени Linux на основе значений аппаратного таймера компьютера. Для этого в записях crontab используйте следующую команду:

Еще одна запись может использоваться для создания базы данных команды whatis. Например, если вы уверены, что будете присутствовать в системе в 20:00, назначьте выполнение команды makewhatis на это время следующим образом:

Все это делается из-под root, но пользователи с обычными правами тоже могут этим пользоваться. Например, можно заставить Linux сообщать время каждые 20 минут. Для этого вначале надо вызвать команду crontab с опцией -e, а затем добавить следующую запись:

Если вы хотите кого-то достать, можно устроить так, чтобы время показывалось каждую минуту. Для этого запишите:

Это хороший метод вымогательства пароля у root :-).

Еще один веселый пример — выведение сообщения в заданное время:

Действия скрипта предельно ясны — каждый день в десять часов вечера появляется сообщение, которое угрожает отформатировать диск С, если немедленно не будет выключен компьютер. Примеров можно привести кучу, но незачем — главное, чтобы вы поняли сам принцип написания заданий. Если вам сложно работать с crontab, ничего страшного, есть еще один стандартный аналог этой замечательной программы, который далеко не беднее, а может, даже богаче (это уже вам решать) по функциональности —atrun.

Демон atrun

Демон cron удобен для составления расписаний регулярно выполняющихся программ или для выполнения регулярных задач, команда же at — для выполнения одноразовых задач или задач напоминания. Хотя после установки Linux автоматически настраивается для обработки запросов расписания at-пользователя, не мешало бы знать, как управлять функциями команды at.

Команда at зависит от команды cron: последняя запускает команду atrun, находящуюся в каталоге /usr/sbin, ежеминутно, пока система функционирует. Команда atrun в свою очередь ищет в каталоге /var/spool/atjobs задачи, подлежащие выполнению.

Чтобы создать команду at, просто напишите слово at, а за ним — время выполнения. После нажатия Enter появляется приглашение at>. После этого можно ввести команду и опять нажать Enter. Для завершения ввода команд используется комбинация Ctrl+D. После этого команда at сообщит номер задания, дату и время выполнения команды.

По умолчанию после установки Linux любой пользователь в системе может применять команду at. Существует четыре способа управления.

1) Отыщите файл at.deny в каталоге /etc. Этот файл представляет собой список пользователей Linux, включая демоны или другие процессы, которые не могут использовать at по соображениям безопасности. Чтобы блокировать кому-то доступ к этой команде, просто поместите имя этого пользователя в at.deny.

2) Если вы хотите, чтобы никто в системе не мог использовать команду at, создайте пустой at.allow или удалите файл at.deny из каталога /etc.

3) Если нужно разрешить использовать команду at только определенным пользователям, создайте файл at.allow в каталоге /etc и поместите в него имена этих пользователей. Если файлы at.allow и at.deny удалены из каталога /etc, команду at имеет право использовать только root.

4) Наконец, с помощью команды atq root может вывести список всех назначенных заданий at и, если таковых много, их можно удалить с помощью команды atrm. Например, atrm 13 удалит задание номер 13 (админы нынче суеверны :-)) — какое задание скрывается под этим номером, можно узнать при помощи команды atq.

Эпи.log

Надеюсь, моя статья поможет вам приобрести важные навыки, которые необходимы всем системным администраторам, — умение планировать и автоматически запускать сложные задачи в любое заданное время. В этом заключается один из секретов успешной работы системного администратора: вначале потратить некоторое время на выработку общего подхода, на выбор инструмента для поддержания системы, который может использоваться снова и снова.

Рекомендуем ещё прочитать:






Данную страницу никто не комментировал. Вы можете стать первым.

Ваше имя:
Ваша почта:

RSS
Комментарий:
Введите символы или вычислите пример: *
captcha
Обновить





Хостинг на серверах в Украине, США и Германии. © sector.biz.ua 2006-2015 design by Vadim Popov