Демоны и фоновые процессы
Загрузка демонов и фоновых программ осуществляется
обычно именно на этапе загрузки системы. И для того, чтобы детально
разобраться в происходящих процессах необходимо, по меньшей мере
представлять, что они из себя представляют.
Демон
(от английского 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, которые
запускаются в автоматическом режиме (об этом мы еще поговорим).