Все буде Україна!

Що таке демони (daemons) в Linux?

  Юрій  | 

  Оновл. 23 Тра 2022  | 

 54

Демони (англ. “daemons”) — це працюючі в фоновому режимі службові програми (або процеси), метою яких є моніторинг певних підсистем ОС та забезпечення її нормальної роботи. Наприклад, демон принтера контролює можливості друку, демон мережі контролює та підтримує мережеві комунікації тощо.

Що таке демони?

Демони є аналогом служб (services) у Windows: вони виконують певні дії у певний час чи у відповідь на певні події. Існує безліч різних демонів, що працюють в Linux, кожен з яких створений спеціально для моніторингу власної маленької частини системи. Через те, що демони виконують основну частину своєї роботи у фоновому режимі і не знаходяться під прямим контролем користувача, часто буває важко визначити призначення того чи іншого демона.

Оскільки демон — це процес, який виконується у фоновому режимі і зазвичай знаходиться поза контролем користувача, то у нього немає керуючого термінала.

Процес — це запущена програма. У певний момент часу процес може або виконуватися, або очікувати, або бути “зомбі”.

У Linux існує три типи процесів:

   Процеси переднього плану (або «інтерактивні процеси») — це ті процеси, які запускаються користувачем у терміналі.

   Фонові процеси (або «автоматичні процеси») — це об’єднані в список процеси, які не підключені до терміналу; вони не очікують користувацького вводу даних.

   Демони (англ. «daemons») — це особливий тип фонових процесів, які запускаються при старті системи та продовжують працювати у вигляді системних служб; вони не вмирають.

Процеси переднього плану та фонові процеси не є демонами, хоча їх можна запускати у фоновому режимі та для виконання певної роботи з моніторингу системи. Для даних типів процесів потрібна участь користувача, який би їх запускав. У той час як демонам для їхнього запуску користувач не потрібен.

Коли завершується завантаження системи, процес ініціалізації системи починає створювати демони за допомогою методу fork(), усуваючи необхідність терміналу (саме це мається на увазі під “відсутністю керуючого терміналу”).

Я не буду вдаватися до подробиць роботи методу fork(), зазначу лише те, що, хоча існують інші методи, традиційний спосіб створення дочірнього процесу в Linux полягає у створенні копії існуючого процесу (за допомогою своєрідного “відгалуження”), після чого виконується системний виклик exec() для запуску іншої програми.

Примітка: Термін “fork” не був взятий зі стелі. Він отримав свою назву від методу fork() із Стандартної бібліотеки мови програмування Сі. У мові Сі цей метод призначений для створення нових процесів.

Приклади демонів у Linux

Найбільш поширений спосіб ідентифікації демона в Linux — це пошук процесу, ім’я якого закінчується буквою d. Є багато способів побачити працюючих демонів. Їх можна відстежити у списках процесів через такі команди, як ps, top, htop, а також pstree.

Команда pstree показує поточні процеси, запущені в системі, і відображає їх у вигляді деревоподібної діаграми. Відкрийте термінал та введіть наступну команду:

$ pstree

Вивід команди pstree — це досить гарна ілюстрація того, що відбувається із нашою системою. Перед нами з’явився список усіх запущених процесів, серед яких можна помітити і кілька демонів: cupsd, dbus-daemon, kdekonnectd, packagekitd та інші.

Ось декілька “популярних” прикладів демонів, які можуть працювати у вашій системі:

   systemd — це системний демон, який (подібно до процесу init) є батьком (прямим або непрямим) всіх інших процесів, і має PID=1.

   rsyslogd — використовується для реєстрації системних повідомлень. Це новіша версія syslogd, що має кілька додаткових функцій.

   udisksd — обробляє такі операції, як: запит, монтування, розмонтування, форматування або від’єднання пристроїв зберігання даних (жорсткі диски, USB-флеш-накопичувачі тощо).

   logind — крихітний демон, який у різний спосіб керує входами користувачів у систему.

   sshd — демон, який відповідає за керування службою SSH. Використовується на будь-якому сервері, який приймає SSH-з’єднання.

   ftpd — керує службою FTP. Протокол FTP (скор. від File Transfer Protocol”) є широко використовуваним протоколом передачі файлів між комп’ютерами, де один комп’ютер діє як клієнт, а інший як сервер.

   crond — демон планувальника завдань, які залежать від часу. З його допомогою можна виконувати оновлення програмного забезпечення, перевірку системи тощо.

Версії походження терміна «daemon»

Є декілька версій походження терміна “daemon”:

   Наукова версія: Використання терміна “daemon” у обчислювальній техніці відбулося у 1963 році. Project MAC (скор. від Project on Mathematics and Computation”) — це проект з математики та обчислень, створений у Массачусетському технологічному інституті. Саме тут термін “daemon” почав використовуватися для позначення будь-якого системного процесу, що відстежує інші завдання і виконує зумовлені дії в залежності від їх поведінки. Процеси були названі терміном “daemons” на честь демона Максвелла.

Примітка: Демон Максвелла — це результат уявного експерименту. У 1867 році Джеймс Клерк Максвелл уявив розумну і винахідливу істоту, здатну спостерігати і спрямовувати рух окремих молекул у заданому напрямку. Мета уявного експерименту полягала в тому, щоб показати можливість протиріччя другому закону термодинаміки.

   Талісман BSD: В операційних системах BSD є свій талісман — червоне чортеня (така гра слів “daemon/demon”). BSD-демона звуть Beastie (Бісті), і його часто можна побачити з тризубом, який символізує системний виклик fork(), активно використовуваний програмами-демонами.

Талісман BSD — чортеня Beastie

Примітка: «Бісті» за звучанням нагадує BSD (вимовляється як «Бі-Ес-Ді»). При цьому beastie є зменшувальною формою від слова beast (звір).

   Теологічна версія: Прихильники цієї версії вважають, що початковою формою вимови слова “daemon” було “daimon”, що означає (за однією з версій) ангела-охоронця. Тоді як “daemon” = помічник, “demon” = злий персонаж із Біблії.

Примітка: Також “daemon” інколи вимовляється як “day-mon” або як рима до слова “diamond”.

   Абревіатура: Деякі користувачі стверджують, що термін “daemon” є абревіатурою від Disk and Execution Monitor”.

Оцінити статтю:

1 Зірка2 Зірки3 Зірки4 Зірки5 Зірок (1 оцінок, середня: 5,00 з 5)
Loading...

Залишити відповідь

Ваш E-mail не буде опублікований. Обов'язкові поля відмічені *