Настройка и работа в Linux

         

Какие задачи поручить демонам?


Какое практическое применение имеют эти демоны и нужно ли тратить драгоценные ресурсы на их постоянное присутствие в памяти? Мы уже вообще-то видели, что в стандартной установке дистрибутива Red Hat Linux демоны crond и anacron выполняют некоторые служебные функции. Характерным примером таких задач является задача обслуживания файлов системных протоколов. Как вы знаете, в Linux (как и вообще в UNIX) постоянно ведется несколько протоколов работы, в которых фиксируются те или иные действия как пользователей, так и ядра и других программ и демонов. . И рассматриваемые в статье демоны тоже вносят свои записи в системные протоколы. Отвечает за ведение протоколов системный демон syslogd. Создаваемые им протоколы быстро растут в объеме и, если их своевременно не чистить, могут заполнить все свободное пространство на диске. В стандартной конфигурации Red Hat Linux за ростом протоколов следит скрипт logrotate, расположенный в каталоге /etc/cron.daily. При превышении объема файла протокола некоторого заданного уровня старый файл переименовывается и открывается новый, а считающиеся уже ненужными файлы уничтожаются.

Самым очевидным примером практического использования демона crond является автоматическая выдача напоминаний о приближении каких-либо важных дат или событий. Проще всего организовать такую процедуру с помощью почтового агента (обычно он постоянно запущен на включенном компьютере). Например, почтовый агент kmail из KDE позволяет просматривать сообщения из нескольких "почтовых ящиков". Поэтому достаточно настроить его еще и на получение предназначенных вам писем из почтовой системы на локальном компьютере, указать cron-у когда надо прислать напоминание и вы будете во-время оповещены о приближении любого важного для вас события.

В книге [1] приведено еще несколько примеров использования демона crond для решения таких задач, как:

  • чистка временных файлов, образующихся в процессе функционирования системы,
  • организацию учета использования системных ресурсов,

  • передача служебной информации по сети в периоды низкой активности.


  • Я приведу еще один пример практического использования демона crond, причем пример, характерный как раз для персонального (домашнего) компьютера.

    Рассмотрим обычную житейскую ситуацию: вы набираете на домашнем компьютере какой-то текст или корректируете исходные тексты программы и в это время отключается электроэнергия. Событие для нашей бытовой сети, к сожалению, обычное. Покупка источника бесперебойного питания вашим семейным бюджетом, конечно, не была предусмотрена, а сохранять результаты работы каждые 15 минут вы тоже, в азарте работы, не удосужились. Я попал в такую ситуацию как раз во время работы над данной статьей. И после восстановления питания последние изменения оказались потеряны, несмотря на то, что как раз перед отключением компьютера я их сохранил и даже вышел из программы редактирования. Это в ДОС сохранение результатов редактирования приводит к тому, что они тут же записываются на диск. А в Linux относительно медленные операции чтения/записи на диск кешируются в оперативной памяти. Это существенно повышает общую производительность системы, но, если система почему-либо рушится, такой подход приводит к тому, что вы потеряете результаты своей работы несмотря на то, что вовремя нажимали кнопочку "Сохранить на диске". Вот тут нам на помощь и может прийти cron!

    Идея решения проста. Напомню, что в Linux имеется специальная команда sync, предназначенная для принудительного "сброса" содержимого временных буферов памяти на диск [4]. Давайте будем выполнять ее в автоматическом режиме каждые 15 (или 30) минут. Для этого достаточно прописать в crontab-файл строку следующего вида

    0,30 * * * * date; sync; echo "запись данных на диск"

    А чтобы сообщения о выполнении этой операции не переполняли ваш почтовый ящик, отправляйте их в никуда (см. выше). Конечно, и самому не надо забывать через каждые полчаса нажимать кнопочку "Сохранить на диске", иначе никакой cron не спасет вас от потери данных при неожиданном выключении питания.


    Содержание раздела