Що таке демон?
Демон — це свого роду програма в 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)
- Змініть робочий каталог (поточний) на безпечне місце
- Закрити дескриптори класу файлу
- Введіть оригінальний код демона