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

edytuj

init[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

edytuj

Istnieje 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

edytuj

Proces 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

edytuj

Ubuntu 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

edytuj
  • bum [14]
  • services-admin
  • sysv-rc-conf
  • rcconf
  • webmin[15]

W czasie startu Ubuntu naciśnij: Ctrl+alt+F8, aby zobaczyć więcej informacji o starcie

Zobacz również

edytuj

Źródła

edytuj
  1. wikipedia init
  2. YoLinux.com: Linux Init Process / PC Boot Procedure
  3. unix.stackexchange questions: detect-init-system-using-the-shell
  4. Narzędzia inicjalizujące w stylu System-V
  5. The rc.d System
  6. Strona podręcznika systemowego init
  7. Systemd w dystrybucji Fedora
  8. wikipedia Upstart
  9. Pakiet upstart w dystrybucji Ubuntu
  10. Strona projektu Upstart
  11. unix.stackexchange question: detect-init-system-using-the-shell
  12. Linux -start systemu - Katarzyna Olędzka
  13. Ubuntu Bootup Howto
  14. Boot-Up Manager
  15. webmin