logo

Демон Linux

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

Демон — це свого роду програма в UNIX-подібній ОС, яка непомітно виконується у фоновому режимі, а не після прямого доступу користувача. Він очікує, щоб його запустили поява певного стану чи події.

Як правило, UNIX-подібні системи виконують численні демони, головним чином для задоволення запитів на надання послуг через інші системи в мережі, до роботи апаратного забезпечення, а також для відповіді на інші програми.

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

обгортка тексту css

Зовсім необов’язково, щоб виконавець умов або дій був відомий, що демон слухає.

Однак програми часто реалізовують дію лише тому, що вони знають, що це призведе до неявного виклику демона.

Демон також називають фоновими процесами. Це програма UNIX або Linux, яка виконується у фоновому режимі. Майже кожен демон містить імена, які закінчуються літерою «d». Наприклад, sshd, це керує підключеннями віддаленого доступу SSH, або демон httpd, який керує сервером Apache. Часто Linux запускає демони під час запуску.

Різні сценарії оболонки зберігаються в каталозі /etc/init.d. Ці сценарії використовуються для запуску та зупинки демонов.

Процеси Linux

Зазвичай демони створюються як процеси. Ці процеси є запущеними або виконуваними екземплярами програми. Процес обробляється ядром, яке є ядром операційної системи, і воно призначає всім спеціальним процесам ідентифікаційні номери.

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

  • партія
  • Інтерактивний
  • Демон

Пакетний процес надсилається через чергу процесів і не пов’язаний із командним рядком. Ці процеси добре підходять для виконання повторюваних операцій, якщо використання системи низьке.

Інтерактивний процес інтерактивно виконується користувачем у командному рядку.

Демон ідентифікується системою, як ті процеси, батьківський процес яких містить PID одиниці.

жирний текст у css

Завжди, це визначає процес init. Процес ініціалізації — це початковий процес, який запускається під час запуску системи Linux і залишається в системі до завершення роботи системи.

Ініціалізація може прийняти будь-який тип процесу, батьківський процес якого завершується або вмирає, не чекаючи статусу дочірнього процесу.

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

Історія Демонів

Деякі демони публікуються сценаріями ініціалізації System V. Це сценарії або короткі програми, які можуть бути виконані автоматично під час запуску системи. Вони можуть або відтворюватися з певними інтервалами, або виживати протягом сеансу.

Тепер декілька демонів запускаються лише за потреби та одним демоном (xinetd) замість безперервного виконання. Xinetd відомий як суперсервер TCP/IP.

зміщення та дисперсія

Він запускається під час запуску, а також прослуховує різні порти, призначені тим процесам, які перераховані у файлі конфігурації, наприклад, /etc/xinetd.conf або /etc/inetd.conf.

Вручну також можна запустити кілька демонів, які запускаються прикладними програмами та операційною системою. Усі демони мають окремий сценарій у кількох UNIX-подібних ОС, включаючи Linux, за допомогою якого їх можна перезапустити та завершити.

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

Ключові моменти Демонів

Деякі важливі ключові моменти Daemons пояснюються нижче:

  • Слово daemon походить від грецького методології daemon. Це були надприродні істоти, які лежали між смертними і богами і які володіли унікальною силою або знаннями.
  • У 1963 році термін «демон» був вперше застосований у системному контексті в піонерському проекті MAC за допомогою IBM 7094.
  • Він був натхненний демоном термодинаміки та фізики Максвелла, який був абстрактним агентом, який підтримував сортування молекул із різними швидкостями та невтомно працював у фоновому режимі.
  • Після цього цей термін використовувався для опису фонових процесів, які невтомно працювали над виконанням системних завдань.
  • Перший комп'ютер-демон був програмою, яка автоматично створювала резервні копії на стрічку.
  • Цей термін був використаний для використання комп’ютера. Це була коротка форма для Disk and Execution MONitor.
  • В операційній системі Microsoft Windows працюють різноманітні програми, які називаються службами демонів. Проте слово «демон» також іноді вживається з цими системами.

Впровадження Демонів

Unix як системи

Процес Unix-подібної системи є демоном, якщо його батьківський процес помирає, і цей демон призначається як процес ініціалізації (процес номер 1) як батьківський процес і не містить керуючого терміналу суто технічним способом.

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

Основна техніка для процедури стає демоном у UNIX-подібній системі, коли процедура запускається через командний рядок або сценарії запуску, такі як сценарій System Starter або сценарій ініціалізації, включає:

  • Видалення непотрібних змінних через середовище за бажанням.
  • Виконується як фонове завдання шляхом виходу та розгалуження. Це дозволяє батьківському компоненту демона (процесу запуску або оболонки) отримувати сповіщення про вихід і продовжувати нормальне виконання.
  • Від'єднання через секцію виклику, зазвичай виконується окремою операцією setsid():
    • Відокремлення через керування tty.
    • Створення новішого сеансу та стати лідером цього сеансу.
    • Стати лідером групи процесу.
  • Якщо демон бажає бути впевненим, що він не успадкує новий контрольний tty, він може вийти та знову розділитися. Це означає, що він більше не є лідером сеансу в новому сеансі та не може успадкувати будь-який контроль tty.
  • Встановлення поточного робочого каталогу як кореневого, щоб процес не використовував жодного каталогу, який може бути поверх змонтованої файлової системи.
  • Зміна umask на 0 для дозволу create(), open() та інших викликів операційної системи, щоб полегшити їх маску дозволу та не покладатися на всю umask виклику.
  • Переспрямування дескрипторів файлів 0, 1 і 2 для стандартних потоків (stderr, stdout, stdin) до файлу журналу або /dev/null і закриття всіх інших файлів дескрипторів, отриманих через батьківський процес.

Коли процес починається будь-яким демоном суперсервера, таким як systemd, launchd або inetd, суперсервер реалізує ці функції для цього процесу, за винятком демонов старого стилю, які не перетворені на виконання під системою systemd і описані як багатопотокові та Type=forking сервери датаграм. на inetd.

читання з файлу csv у java

MS-DOS

Програма, подібна до демона, була виконана як постійне програмне забезпечення (скорочено TSR) на платформі Microsoft DOS.

Windows NT

Програми, відомі як служби Windows, реалізують функції цих демонов у системах Microsoft Windows NT. Вони виконуються як процеси й зазвичай не взаємодіють із мишею, клавіатурою та монітором. Вони можуть бути запущені за допомогою операційної системи під час завантаження.

Служби Windows зупиняються, запускаються та налаштовуються вручну за допомогою панелі керування (спеціальної програми конфігурації/контролю), системи сценаріїв PowerShell або команд net stop і net start, елемента контролера служб диспетчера керування службами.

Проте будь-яка програма Windows може реалізувати обов’язки демона не просто як служба, а деякі демони Windows містять опцію виконання як звичайного процесу.

Класичні macOS і Mac OS

Різноманітні додаткові служби та функції були полегшені файлами, завантаженими під час завантаження, які перебудовують операційну систему на класичній Mac OS.

Вони називалися панелями керування та системними розширеннями. Пізніші версії стандартної Mac OS розширили їх повністю повноцінними безликими фоновими програмами.

Ці програми є звичайними програмами, які виконуються у фоновому режимі. Вони все ще вказувалися як звичайні системні розширення для користувача.

macOS — це система Unix, яка використовує демони. macOS застосовує термін служби для позначення програмного забезпечення, яке реалізує функції, вибрані через меню служб, замість того, щоб застосовувати цей термін, як Windows для демонов.

Типові функції демонів

  • Виконуйте заплановані дії, наприклад cron.
  • Моніторинг систем, таких як масив RAID або стан жорсткого диска.
  • Дайте відповідь на запит мережі та відкрийте мережевий порт (наприклад, порт 80).

Як ми запускаємо, перезапускаємо або зупиняємо демони для підказки оболонки?

Нам потрібно застосувати їхні службові команди, як показано нижче:

 service daemon-name-here start service daemon-name-here stop service daemon-name-here restart 

У наступному прикладі зірочки, перезапуск і зупинка.

 service httpd start service httpd stop service httpd restart 

Як перевірити список кожного запущеного демона?

Щоб перевірити статус кожного встановленого демона, введіть:

 service - -status-all 

Планування нашого демона

Що зробить демон?

Демон повинен реалізувати одну річ, і реалізувати її добре. Ця єдина річ може бути такою ж складною, як робота з великою кількістю поштових скриньок у кількох доменах, або такою ж простою, як виклик sendmail для надсилання її адміністратору та вказування звіту.

Ми повинні мати краще уявлення про те, що повинен робити демон у будь-якому випадку. Він взаємодіятиме з кількома іншими демонами, які ми можемо вказати чи ні. Це також щось інше, щоб перевірити.

10 у степені 6

Взаємодія

Демони ніколи не повинні спілкуватися з користувачем безпосередньо через термінал. Кожне спілкування проходить через кілька типів інтерфейсів (які ми можемо або не повинні вказувати), які можуть бути такими ж складними, як GUI+GTK, або такими ж простими, як окремий набір.

Основна структура daemon

Daemon має виконати кілька домашніх завдань низького рівня, щоб підготуватися до справжньої роботи, коли він запуститься. Це включає в себе кілька кроків, які є такими:

  • Відгалуження суперпроцесу (батьківського процесу)
  • Змінити маску файлового режиму (umask)
  • Відкрийте журнали для запису
  • Створіть спеціальний ідентифікатор сеансу (скорочено SID)
  • Змініть робочий каталог (поточний) на безпечне місце
  • Закрити дескриптори класу файлу
  • Введіть оригінальний код демона

Список служб демонів для Unix і Linux подібних систем

    анахрон:Він виконує відкладені дії cron під час запуску.amd:Це означає Auto Mount Daemon.тощо:Він виконує завдання в черзі, застосовуючи інструмент.apmd:Це розшифровується як Advanced Power Management Daemon.crond:Це демон планувальника завдань.autofs:Це допомагає демону автоматичного монтування, дозволяючи відключати та монтувати пристрої за вимогою.dhcpd:Це означає протокол динамічної конфігурації хоста. Крім того, це сервер протоколу Internet Bootstrap.cupsd:Це означає демон принтера CUPS.ftpd:Це розшифровується як FTP Server Daemon.httpd:Це демон веб-сервера.закритий:Він може маршрутизувати демони, які замінюють egpup і routed, і керувати більш ніж одним протоколом маршрутизації.lpd:Це розшифровується як Line Printer Daemon.imapd:Це демон сервера imap.inetd:Це розшифровується як Internet Superserver Daemon.memchached:Це демон розподіленого кешування об’єктів у пам’яті.mysql:Це демон сервера бази даних.монтувати:Це демон монтування.nfsd:Це розшифровується як Network File Sharing Daemon.названий:Це демон DNS-сервера.nflock:Застосовується для запуску та зупинки служб блокування файлів nfs.ntpd:Це розшифровується як демон служби протоколу мережевого часу.nmbd:Це розшифровується як Network Message Block Daemon.postgresql:Це демон сервера бази даних.постфікс:Це агент транспортування пошти, який використовується як заміна Sendmail.rpcbind:Це означає Remote Procedure Call Bind Daemon.маршрутизується:Він обробляє таблиці маршрутизації.smbd:Це демон Samba.sendmail:Це демон агента передачі пошти.smtpd:Це розшифровується як Simple Mail Transfer Protocol Daemon.кальмар:Це демон проксі-сервера, який кешує веб-сторінки.snmpd:Це розшифровується як Simple Network Management Protocol Daemon.синхронізація:Він може підтримувати синхронізацію різних файлових систем разом із системною пам’яттю.sshd:Це демон сервера Secure Shell.syslogd:Це розшифровується як демон системного журналювання.telnetd:Це демон сервера Telnet.tcpd:Він має обгортку служби, яка може обмежити авторизацію до служб на основі inetd із hosts.deny та hosts.allow.vsftpd:Це розшифровується як Very Secure FTP Daemon.webmin:Це веб-демон сервера адміністрування.xntd:Це демон мережевого сервера часу.xinetd:Це розширений демон Інтернет-суперсервера.