Путь к Linux. Руководство по установке и настройке

       

Демоны и фоновые процессы


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

Демон  (от английского demon или daemon -- встречаются обе транскрипции!)  представляет собой программу выполняющуюся в фоновом режиме, незаметно для пользователя и дополняющую операционную систему каким либо специальным сервисом. Происхождение названия не имеет ничего общего с ужасами потустороннего мира или игрой DOOM, и представляет собой акроним от "Disk And Execution MONitor". Основная идея, положенная в основу демонов, состоит в том, что эта программа не вызывается пользователем в явной форме, а спокойно ожидает в памяти какого-либо определенного события. Инициатор генерации события может и не подозревать, что в дебрях оперативной памяти его подстерегает голодный демон (а иногда программа может выдать квитанцию о выполнении той или иной операции только в том случае, если она передала информацию соответствующему демону). Характерный пример - работа с принтером, при котором программа LPR передает данные демону управления печатью LPD. При постановке задачи в очередь на печать LPR даже не интересуется наличием в памяти демона печати, а только помещает печатаемый файл в каталог спулинга.

Впрочем, демоны как обработчики событий довольно часто используются и в прикладных программах - например, в приложениях искусственного интеллекта. Так, программа обслуживания базы знаний может использовать демонов для реализации машины вывода. При добавлении в базу знаний новой информации активизируются различные демоны (какие именно, определяется содержимым информации), которые переваривают входной поток данных и создают новое правило, которое в свою очередь может пробудить к жизни других демонов и так далее. В результате обновление базы знаний выполняется в фоновом режиме, а основная программа в это время может продолжать выполнение своей главной задачи.


Мы уже упоминали об одном демоне, к которому каждый UNIX-программист должен относится с почтением. Это /etc/update - программа выполняющая синхронизацию дисков (системный вызов sync) каждые тридцать секунд.

Есть и другие полезные демоны, которых вы можете обнаружить с помощью команды ps -ax (показать все процессы, в том числе и те, которые запущены другими пользователями). Это syslogd и crond. Первый из них ведет системный журнал, который помогает системному администратору разобраться в причинах сбоев и неполадок, а также обнаружить злоумышленников, пытающихся взломать защиту вашей системы, а второй...... Впрочем, чтобы выяснить это вы всегда можете воспользоваться он-лайновой системой помощи.

Отмечу попутно, что man не всегда сразу же находит нужную информацию. Связано это с тем, что все данные разделены на несколько страниц. При этом на первой странице размещается описание команд, на второй — системные вызовы, а на восьмой - конфигурационные файлы. Поэтому, имеет смысл указать программе, на какой странице вы рассчитываете найти интересующую вас тему. А как это сделать - вы можете узнать, воспользовавшись командой man man - получить подсказку по команде man.

Демоны, как правило, стартуют сразу же после окончания загрузки системы и не нуждаются в присутствии активных пользователей. Поэтому вы можете организовать работу UNIX-системы без участия человека, например, создав FTP-сервер или BBS, которые запускаются в автоматическом режиме (об этом мы еще поговорим).


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