Что такое демоны и службы в программировании

Что такое демоны и службы в программировании

Это маленькие программы, которые работают в фоновом режиме

Иногда в разговорах программистов и системных администраторов можно услышать такие фразы: «А ты в курсе, что у тебя демон перестал работать?» или «Слушай, за это вообще другая служба отвечает, надо именно её запускать». Рассказываем, что это значит.

Что такое демоны

Демон (daemon) — это программа в UNIX-системах, которая постоянно работает фоном и выполняет какую-то одну свою задачу. UNIX-системы — это сам Unix, Linux, BSD, Solaris, MacOS и ещё много других. Про Юникс мы расскажем отдельно.

Чаще всего демоны запускаются при старте системы и работают всё время, пока работает компьютер или сервер.

У демонов обычно нет графического интерфейса, а чтобы управлять демонами, используют командную строку, файлы с настройками или специальные программы, которые отправляют демону нужные команды. Более того, демоны проектируются именно так, чтобы сидеть на фоне и не отсвечивать: если вам пришлось настраивать демонов, вы вряд ли будете читать эту статью. 

Что такое службы

Службы — это то же самое, что и демоны, только в Windows. 

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

Зачем нужны демоны и службы

Каждая из таких программ отвечает за свой участок работ: 

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

Получается, что демоны — это как работники в гипермаркете: одни следят за выкладкой, вторые работают на кассе, третьи следят за чистотой, четвёртые разгружают и так далее. У каждого своя специализация и фронт работ.

Агенты загрузки и объекты автозапуска

Часто демонов путают с Launch Agents и Startup Items (на MacOS и Windows соответственно). Это общее название программ, которые запускаются при запуске компьютера и входе в систему. Но, в отличие от демонов, у этих агентов может быть графический интерфейс. Например, если при входе в систему автоматически запускается торрент-клиент или приложение для VPN, то это агенты загрузки. Вы можете ими пользоваться. 

А демоны невидимы и просто делают так, чтобы компьютер работал — порты пробрасывались, сокеты открывались, данные туда-сюда ходили, жёсткие диски были видны и т. д. Можно сказать, что агенты загрузки — это ваши полезные привычки; а демоны — это ваши инстинкты. 

Уровни доступа и разрешения

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

Демоны в UNIX-системах обычно запускаются на уровне системных и служебных пользователей, то есть живут над обычными пользователями, которые садятся и вводят свой логин и пароль. Вы ещё не залогинились, а демоны уже шуршат портами. 

А вот когда вы вошли, то и ваш скрипт автозапуска при логине может запустить других демонов. Они уже, в свою очередь, запускаются на уровне вашего пользователя, и им в системе можно ровно то, что можно вам. 

Антивирусы — это демоны?

У антивирусов может быть глубокая системная часть, которая защищает вашу систему на глубочайшем уровне, и это будет демон. Также у антивируса может быть приложение с интерфейсом — это будет просто приложение. Приложение может общаться с демоном, но если вы выйдете из приложения, демон продолжит работать фоном.

Можно ли сделать собственного демона?

Да, можно. Потом нужно будет поковыряться в конфигах системы, чтобы научить её запускать вашего демона с нужными правами доступа. Но в целом ничто не мешает. 

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

Почему такое название?

Слово заимствовано из латинского daemon, а оно, в свою очередь, из древнегреческого. И у тех и у других слово означало любого духа: злого, доброго, главное — сверхъестественного. Программы-демоны ровно так и работают: на фоне и незаметно. 

В русский язык слово «демон» пришло из греческого именно в значении «злой дух», а в русский айтишный — из английского. Никакой чертовщины в айтишных демонах не предусмотрено.

Художник:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Кирилл Климентьев

Соцсети:

Олег Вешкурцев

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Вам может быть интересно
База данных: что это и какие бывают
База данных: что это и какие бывают

Объясняем на картинках.

easy
Что такое куча
Что такое куча

Это зависит от содержимого.

medium
Что такое Design first и Code first
Что такое Design first и Code first

Это когда программисты делают то, что скажут дизайнеры, или наоборот.

easy
Что такое своп и зачем он вам
Что такое своп и зачем он вам

Как расширить оперативную память за счёт жёсткого диска

easy
Кто такой технический директор? Почему он главный, но не пишет код?
Кто такой технический директор? Почему он главный, но не пишет код?

Как перейти от программирования к управлению.

easy
В чём разница между ждущим и спящим режимом
В чём разница между ждущим и спящим режимом

Вся разница — в режиме энергосбережения

easy
Почему некоторые разработчики ругают вёрстку на «div»
Почему некоторые разработчики ругают вёрстку на «div»

Потому что иногда они правы

easy
Что такое вычислительная фотография и как она работает
Что такое вычислительная фотография и как она работает

Обработка одновременно со съёмкой

easy
Что такое каскадная разработка
Что такое каскадная разработка

Это когда всё делают строго по очереди

easy
easy