Linux/Definicje/Demon
Demony, inaczej usługi, są pewnym rodzajem programów, które są uruchamiane zazwyczaj przy starcie systemu, i działają potem cały czas w tle, zużywając minimalne zasoby. W każdej chwili mogą przyjąć od innego programu polecenie (żądanie), i je w jakiś sposób wykonać. Demonem jest np. serwer http, który cały czas jest uruchomiony w tle, a w momencie gdy przychodzi żądanie od przeglądarki wysyła odpowiedni plik, lub wykonuje jakąś akcję. Demon może również obsługiwać programy działające na tym samym komputerze.
Kolejną cechą charakterystyczną demonów, jest to że po zamknięciu ich w zwykły sposób, są automatycznie ponownie uruchamiane, np. jeżeli w serwerze wystąpi błąd, to zostanie on znowu uruchomiony, i dzięki temu będzie dalej możliwe łączenie się z daną usługą. Do zatrzymania działania demona służą specjalne skrypty, które znajdują się zazwyczaj w katalogu
/etc/init.d/
Skrypty te mogą być uruchamiane z następującymi opcjami:
- start - uruchamia demona
- stop - zatrzymuje demona
- restart - zatrzymuje, i ponownie uruchamia demona; przydatne np. w przypadku gdy zmieniona została konfiguracja danego demona
Niektóre mogą przyjmować również inne opcje, jednak te trzy są standardowe.
init: demon wyzwalający demony
edytujinit[1] (od ang. initialize) jest to pierwszy program uruchamiany w systemach uniksowych (np. Linux) przez jądro w trakcie procesu uruchamiania systemu operacyjnego. Następnie na podstawie plików konfiguracyjnych lub skryptów startowych init uruchamia pozostałe procesy systemowe[2], dla których jest procesem macierzystym (ojcem), stanowi korzeń drzewa procesów.
Proces init ma pid równy 1. Jest jedynym procesem który nie ma ojca
ps -j -1
Przykładowy wynik (Ubuntu 13.10):
PID PGID SID TTY STAT TIME COMMAND 1 1 1 ? Ss 0:00 /sbin/init
Implementacje
edytujIstnieje wiele różnych implementacji programu init wykorzystywanych przez różne systemy uniksowe lub dystrybucje Linuksa. Można sprawdzić w konsoli jakiego inita używa nasz system [3]
Do najpopularniejszych implementacji programu init należą:
- sysvinit - stosowana w wielu dystrybucjach Linuksa (np. Debian[4], Gentoo, Slackware)
- w stylu BSD - wykorzystywana w systemach FreeBSD, NetBSD[5], OpenBSD[6] itp.
- systemd - nowsza wersja kompatybilna z sysvinit, posiadająca wiele dodatkowych funkcji, dostępna np. w Fedorze[7]
- upstart [8] - stworzona na potrzeby Ubuntu przez firmę Canonical Ltd.[9][10]
- initng - jeszcze jedna implementacja programu init
Jak sprawdzić której implementacji używa nasz system ? [11]
if [[ `/sbin/init --version` =~ upstart ]]; then echo using upstart;
elif [[ `systemctl` =~ -\.mount ]]; then echo using systemd;
elif [[ -f /etc/init.d/cron && ! -h /etc/init.d/cron ]]; then echo using sysv-init;
else echo cannot tell; fi
systemv
edytujProces init odczytuje swój plik konfiguracyjny /etc/inittab, szuka linii oznaczonej sysinit:[12]
# System initialization si::sysinit:/etc/rc.d/rc.sysinit
i wykonuje podany tam skrypt, tutaj:
/etc/rc.d/rc.sysinit
ubuntu
edytujUbuntu używa kombinacji system V i upstart. Skrypty startowe znajdują się: [13]
- w katalogu /etc/init.d dla System V init: pliki Bash'a
- w katalogu /etc/init dla upstart init (ang. jobs): pliki z rozszerzeniem conf
Sprawdź:
man services
Programy dodatkowe
edytujW czasie startu Ubuntu naciśnij: Ctrl+alt+F8, aby zobaczyć więcej informacji o starcie
Zobacz również
edytujŹródła
edytuj- ↑ wikipedia init
- ↑ YoLinux.com: Linux Init Process / PC Boot Procedure
- ↑ unix.stackexchange questions: detect-init-system-using-the-shell
- ↑ Narzędzia inicjalizujące w stylu System-V
- ↑ The rc.d System
- ↑ Strona podręcznika systemowego init
- ↑ Systemd w dystrybucji Fedora
- ↑ wikipedia Upstart
- ↑ Pakiet upstart w dystrybucji Ubuntu
- ↑ Strona projektu Upstart
- ↑ unix.stackexchange question: detect-init-system-using-the-shell
- ↑ Linux -start systemu - Katarzyna Olędzka
- ↑ Ubuntu Bootup Howto
- ↑ Boot-Up Manager
- ↑ webmin