fbpx
4.8 C
София

Какво са демоните в Linux

Най-четени

Даниел Десподов
Даниел Десподовhttps://www.kaldata.com/
Ежедневен автор на новини. Увличам се от съвременни технологии, оръжие, информационна безопасност, спорт, наука и концепцията Internet of Things.

Демоните работят много, за да можем по-добре да се съсредоточим върху нашата работа. Представете си, че пишете статия или книга и имате интерес да пишете добре и с лекота. Със сигурност ще е по-удобно да не се налага ръчното стартиране на програмата за работа с принтера, както и за мрежовите процеси, а след това непрекъснато да ги гледате, за да сте сигурни, че всичко работи нормално.

За всичко това можем да благодарим на демоните, понеже те вършат тази работа вместо нас. Нека да се спрем малко по-подробно но това, какво са демоните в Linux и за какво са необходими.

Какво са демоните в Linux средата?

Демонът в Linux е програма, която има точно определена уникална цел. Обикновено това са служебни програми, които незабелязано работят във фонов режим за да могат да извършват мониторинг на състоянието, да обслужват определени подсистеми на операционната система и да гарантират правилната работа на цялата ОС. Така например, демонът на принтера непрекъснато следи състоянието на услугата за печат, а мрежовият демон управлява мрежовите връзки и следи какво е тяхното състояние.

Много хора, които са мигрирали от Windows към Linux оприличават демоните на услуги или процеси. В Mac OS например, терминът „услуга“ има друго значение. Но тъй като Mac OS си е същият Unix, в нея също се използват демони. Но в тази операционна система терминът услуги се използва само за обозначаване на софтуера, който се намира в менюто Услуги (Services).

Демоните изпълняват определени действия в точно определено планирано време или в зависимост от определени събития. В една Linux система работят множество демони, като всеки от тях е предназначен да следи и да извършва мониторинг за своя малка част от операционната система. Дебело да подчертаем, че потребителят няма пряк контрол върху демоните – те на практика са невидими за него, но са абсолютно необходими. Но тъй като демоните вършат своята работа предимно във фонов режим, на редица потребители те изглеждат доста загадъчни.

Кои демони работят във вашата компютърна система?

Обикновено имената на процесите на демоните завършват на буквата d. При Linux е прието демоните да получават именно такива имена. Има много начини да бъдат видени работещите демони. Те се появяват в списъка с процесите, който може да бъде изведен с помощните програми ps, top или htop. Но най-удобна и най-подходяща за търсенето на демони е помощната програма pstree. Тя показва всички процеси, които са стартирани във вашата Linux система в дървовиден вид. Отворете терминала и стартирайте тази команда:

pstree

Ще видите целия списък на всички стартирани процеси. Може и да не знаете за какво отговарят и каква работа вършат всичките тези процеси, но те ще бъдат показани. Извеждането на списък с помощта на pstree е една отлична илюстрация на това, което се случва с вашата компютърна система. Тук е доста удобно да бъдат намерени стартираните Linux демони.

Ето някои от Linux демоните, които можете да видите по този начин: udisksd, gvfsd, systemd, logind, както и още много други. Списъкът с процесите е доста дълъг и не се събира в един прозорец на терминала, като разбира се терминалът дава възможност за превъртане нагоре и надолу, като по този начин и е удобно да се разгледа всичко:

Стартирането на демоните в Linux

Нека да разберем как се стартира един Linux демон. Още веднъж да кажем: демонът в Linux е процес, работещ във фонов режим и е извън контрола на потребителя, което означава, че демонът не е свързан с терминала и не може да бъде управляван с негова помощ. От друга страна, процесът е част от стартирана програма, който обикновено работи във фонов режим. Той може по всяко време да бъде стартиран, да е в състояние на хибернация или да е зомби (това е процес който е изпълнил своята задача и очаква родителския процес да приеме неговия резултат).

В Linux съществуват три типа процеси: интерактивни, пакетни и демони. Интерактивните процеси потребителят стартира от командния ред. Пакетните процеси обикновено също не са свързани с терминала. Те обикновено се стартират, когато операционната система е минимално натоварена и именно тогава вършат своята работа. Това могат да бъдат например скриптовете за резервно копиране и други подобни обслужващи сценарии.

Интерактивните и пакетните процеси не са демони, въпреки че могат да бъдат стартирани и да работят във фонов режим, в който да свършат своята работа. Ключовата разлика е в това, че тези процеси изискват участието на човек. На демоните не е необходим човек, за да бъдат стартирани и да работят.

Когато зареждането на операционната система приключи, системата за инициализация, например systemd, започва създаването на демоните. Този процес е прието да се нарича forking (разклоняване). Програмата се стартира като обикновен интерактивен процес, който има връзка с терминала, но в един определен момент тя ги разделя на два идентични потока. Първият процес, който е прикачен към терминала може да продължи своето изпълнение или да приключи своята работа. Но вторият, който не е прикачен и към нищо не е свързан, продължава да работи във фонов режим.

Има и други начини за разклоняването на програмите в Linux, но традиционно за създаването на дъщерни процеси се правят копия на текущия. Терминът forking не се е появил от нищото. Това име идва от езика за програмиране C. Стандартната библиотека на С включва методи за управление на услугите, като единият от тях се нарича fork и се използва за създаването на нови процеси. След създаването на процеса, процесът на базата на който е бил създаден демона, за него се явява родителски процес.

Когато инициализиращата система стартира демоните, тя просто се разделя на две части. В този случай системата за инициализация се счита за родителски процес на демоните. Но в Linux има още един метод за стартиране на демони. Когато даден процес създаде дъщерен процес – демон, а след това приключи своята работа. В този случай демонът остава без родител и негов родител става системата за инициализация. Важно е да не се обърква този тип процеси със зомбитата. Зомбито е процес, който е приключил своята работа и очаква родителския процес да приеме неговите данни.

Примери за демони в Linux

Най-лесният начин за откриване на демона е буквата d в края на неговото име. Ето един неголям списък с демони, които работят в една Linux система. Всеки демон е специално създаден за изпълняването на точно определена задача:

  • systemd – основната задача на този демон е унифициране на конфигурацията и определяне поведението на другите демони в различните Linux дистрибуции
  • udisksd – обработва операции като монтиране, демонтиране, форматиране, включване и изключване на всякакви устройства за запис и четене на данни, каквито са дисковете, флаш дисковете, USB флаш стиковете и т.н.
  • logind – неголям демон, управляващ логването на потребителите
  • httpd – Това е демонът на уеб сървъра, който дава възможност на домашния компютър или уеб сървър да се хостват уеб сайтове
  •  sshd – дава възможност за отдалечено включване към сървър или компютър чрез защитения SSH протокол
  • ftpd – организира достъп до компютъра чрез FTP протокола, който се използва за по-удобно прехвърляне на файлове
  • crond  – демонът, даващ възможност за стартиране на разнообразни програми в предварително зададено време

Откъде се е появил терминът демон в Linux?

Откъде се пак си е взел този доста странен термин? На пръв поглед може да ни се стори, че създателите на тази операционна система са имали малко изкривено чувство за хумор. Но това съвсем не е така. Тази дума се появява в изчислителната техника много преди Unix. Историята на тази дума е още по-древна.

Първоначално тази дума се е пишела като daimon и е означавала ангели-пазители или духове помощници, които помагат за сформиране характерите на хората. Сократ е твърдял, че е имал демон, който много му е помагал. Демонът на Сократ го е съветвал кога трябва да си държи езика зад зъбите. Сократ разказва за своя демон по време на съдебно дело през 399 година преди нашата ера. Така че вярата в демоните съществува много отдавна. Понякога думата daimon си пише като daemon. Това е едно и също.

Само че докато daemon е помощник, demon е един твърде лош персонаж от Библията. Разликите в изписването съвсем не са случайни и се счита, че това е било решено някъде през 16-ти век. Именно тогава са решили, че daemons са добрите момчета, а demons – лошите.

Използването на думата демон (daemon) в изчислителната техника започва през 1963 година. Популярният проект Project MAC (Project on Mathematics and Computation) е бил разработен в масачузетския технологичен институт. Именно в този проект започва използването на думата демон за обозначаването на всички програми които работят във фонов режим, следят какво е състоянието на другите процеси и изпълняват точно определени действия в зависимост от ситуацията. Тези програми са били наречени по този начин в чест на Демона на Максуел.

Демонът на Максуел е всъщност резултат от мислен експеримент. През 1971 година Джеймс Кларк Максуел си е представил същество, което е способно да наблюдава и да направлява движението на отделните молекули. Целта на този мислен експеримент е била да се покажат противоречията във втория закон на термодинамиката.

Но има и други варианти но значението на тази дума. Така например, това може да бъде абревиатурата на Disk And Executive MONitor. ов миналото специалистите и потребителите не са използвали термина демон за тази цел и вариантът с абревиатурата най-вероятно не е верен.

Сега вече знаем какво са демоните в една Linux среда. И накрая, нека да обърнем внимание, че талисманът на BSD е именно демон. Той е избран в чест на софтуерните демони (daemons), но изглежда като зъл демон (demon). Името на този демон е Beastie. Не е известно точно откъде се е взело това име, но се предполага, че то идва от фразата  BSD (Berkeley Software Distribution – вторият важен клон на Unix, който се разпространява от Калифорнийския университет, Бъркли от началото на 1970-те години) – Try it; I did. Ако тя много бързо се произнесе на английски език, се получава звук, който много прилича на Beastie. А и тризъбецът на Beastie символизира разклоняването (forking) на процесите в Linux.


Коментирайте статията в нашите Форуми. За да научите първи най-важното, харесайте страницата ни във Facebook, и ни последвайте в Telegram и Viber или изтеглете приложението на Kaldata.com за Android, iOS и Huawei!

Абонирай се
Извести ме за
guest

9 Коментара
стари
нови
Отзиви
Всички коментари

Нови ревюта

Подобни новини