Какво е демон?
Демонът е вид програма над UNIX-подобна операционна система, която се изпълнява във фонов режим ненатрапчиво, вместо при директен достъп на потребител. Той чака да бъде задействан от появата на определено състояние или събитие.
Обикновено UNIX-подобните системи изпълняват многобройни демони, предимно за приспособяване на заявки за услуги през други системи в мрежата, за хардуерна дейност и за отговор на други програми.
Примери за условия или действия, които биха могли да активират демони в дейността, могат да бъдат конкретна дата или час, преминаване на описан интервал от време, получаване на уеб заявка или имейл, създаден от конкретна комуникационна линия, и файл, кацащ в конкретна директория.
низ concat java
Не е задължително извършителят на състояние или действие да бъде известен, че демонът слуша.
Въпреки това, програмите често изпълняват действие само защото им е известно, че то имплицитно ще предизвика демон.
Демонът се нарича още фонови процеси. Това е UNIX или Linux програма, която се изпълнява във фонов режим. Почти всеки демон съдържа имена, които завършват с буквата 'd'. Например sshd, това управлява връзките на SSH отдалечен достъп или httpd демона, който управлява Apache сървъра. Често Linux стартира демони в началния момент.
Различни шел скриптове се записват в директорията, която е /etc/init.d. Тези скриптове се използват за стартиране и спиране на демони.
Linux процеси
Обикновено демоните се създават като процеси. Тези процеси са работещи или изпълняващи се екземпляри на програма. Процесът се управлява от ядрото, което е ядрото на операционната система и присвоява всички специални идентификационни номера на процеса.
В Linux има основно три често срещани вида процеси, които са както следва:
- Партида
- Интерактивен
- Демон
Пакетният процес се изпраща чрез опашка от процеси и не е свързан с командния ред. Тези процеси са много подходящи за извършване на повтарящи се операции, ако използването на системата е слабо.
Интерактивният процес се изпълнява интерактивно от потребителя на командния ред.
Демонът се идентифицира от система като тези процеси, чийто родителски процес съдържа PID от един.
Винаги дефинира процеса init. Процесът на стартиране е първоначалният процес, който започва при стартиране на Linux система и остава в системата, докато системата не бъде изключена.
Init може да приеме всеки тип процес, чийто родителски процес се прекратява или умира, без да изчака статуса на дъщерния процес.
И така, основната техника за стартиране на демона е разделяне или разклоняване два пъти или веднъж и също така позволяване на родителските процеси да прекратят, докато дъщерният процес започва да изпълнява общата си функция.
История на демоните
Няколко демона се публикуват от init скриптове на System V. Това са скриптове или кратки програми, които могат да се изпълняват автоматично, ако системата се стартира. Те могат или да се възпроизвеждат на интервали, или да оцелеят по време на сесията.
размер латексов шрифт
Сега няколко демона се стартират само при необходимост и от един демон (xinetd), вместо да се изпълняват непрекъснато. Xinetd е известен като TCP/IP супер сървър.
Той се стартира при стартиране и също така слуша различни портове, които са присвоени на онези процеси, изброени в конфигурационния файл, т.е. /etc/xinetd.conf или /etc/inetd.conf.
Ръчно могат да бъдат стартирани и няколко демона, които да бъдат стартирани от приложните програми и операционната система. Всички демони имат индивидуален скрипт в няколко UNIX-подобни ОС, включително Linux, с който могат да бъдат рестартирани и прекратени.
Управлението на тези скриптове се изпълнява според нивата на изпълнение. Нивото на изпълнение може да се дефинира като работно или конфигурационно състояние на система, което позволява само някои избрани процеси да бъдат достъпни. Стартирането в отделно ниво на изпълнение може да подпомогне решаването на определени проблеми или проблеми, включително коригиране на системни грешки.
Ключови точки на демоните
Някои важни ключови точки на Daemons са обяснени по-долу:
низ в масив в c
- Думата демон е взета от гръцката методология демон. Това са свръхестествени същества, които лежат между смъртните и боговете и които притежават уникална сила или знание.
- През 1963 г. терминът демон първоначално е приложен в системен контекст на пионерския проект MAC с помощта на IBM 7094.
- Той беше вдъхновен от демона на термодинамиката и физиката на Максуел, който беше абстрактен агент, който поддържаше сортиране на молекули с различни скорости и работеше на заден план неуморно.
- След това терминът беше използван за описване на процесите на фона, които работеха за изпълнение на системни задачи неуморно.
- Първият компютър демон беше програма, която автоматично създаваше резервни копия на лента.
- Този термин беше използван за компютърна употреба. Беше като съкратена форма за Disk and Execution MONitor.
- Различни програми, наречени услуги, функциите на демоните в операционната система Microsoft Windows. Думата демон обаче понякога се прилага и с тези системи.
Внедряване на демони
Unix като системи
Процесът на Unix-подобна система е демон, ако неговият родителски процес умре и този демон е назначен за начален процес (процес номер 1) като родителски процес и не съдържа контролен терминал по строго технически начин.
Демон обаче може да бъде всеки фонов процес, независимо дали е дъщерен процес на init или не.
Основната техника за процедура се превръща в демон в UNIX-подобна система, когато процедурата се стартира чрез командния ред или стартиращи скриптове като System Starter скрипт или init скрипт, включва:
- Изтриване на ненужни променливи чрез средата по избор.
- Изпълнява се като фонова задача чрез излизане и разклоняване. Той позволява на родителя на демона (процес на стартиране или обвивка) да получава известия за излизане и да продължи нормалното изпълнение.
- Откачане през секцията за извикване, обикновено извършено чрез отделна операция, setsid():
- Дисоциация чрез tty контрол.
- Създаване на по-нова сесия и ставане на лидер на тази сесия.
- Ставайки лидер на групата за процеса.
- Ако демонът желае да се увери, че няма да наследи нов контролен tty, той може да излезе и да се разклони отново. Това означава, че вече не е водач на сесия в новата сесия и не може да наследи контрол на tty.
- Задаване на текущата работна директория като главна директория, така че процесът да не взема никаква използвана директория, която може да е над монтирана файлова система.
- Модифициране на umask на 0 за разрешаване на create(), open() и други извиквания на операционната система, за да се улесни тяхната маска за разрешение и да не се разчита на цялата umask на повикващия.
- Пренасочване на файловите дескриптори 0, 1 и 2 за стандартните потоци (stderr, stdout, stdin) към лог файл или /dev/null и затваряне на всеки друг дескрипторен файл, придобит чрез родителския процес.
Когато процесът започне от всеки демон на суперсървър като systemd, launchd или inetd, суперсървърът ще приложи тези функции за този процес, с изключение на онези демони в стар стил, които не са трансформирани в изпълнение под systemd и описани като многонишкови и Type=forking сървъри за дейтаграми при inetd.
какъв е размерът на екрана на моя монитор
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, за да го изпратите до администратор и да посочите отчет.
Трябва да имаме по-добра представа какво трябва да прави един демон във всеки случай. Той ще взаимодейства с няколко други демона, които можем да посочим или не. Също така е нещо друго за изследване.
номерирайте азбуката
Взаимодействие
Демоните никога не трябва да комуникират с потребителя директно от терминал. Всяка комуникация преминава през няколко вида интерфейси (които ние може или може да не трябва да посочим), които могат да бъдат толкова сложни, колкото GUI+GTK, или толкова лесни, колкото индивидуален набор.
Основната структура на daemon
Daemon трябва да изпълни няколко домакински задачи на ниско ниво, за да се подготви за истинската работа, когато започне. Това включва някои стъпки, които са както следва:
- Разклонете суперпроцес (процес родител)
- Промяна на маската на файловия режим (umask)
- Отворете регистрационни файлове за писане
- Направете специален идентификатор на сесия (накратко SID)
- Променете работната директория (текуща) на сигурно място
- Затворете дескрипторите за класиране на файла
- Въведете оригиналния демон код