Provided by: manpages-pl_20051117-1_all bug

NAZWA

       init, telinit - sterowanie procesu inicjującego

SKŁADNIA

       /sbin/init [ -a ] [ -s ] [ -b ] [ -z xxx ] [ 0123456Ss ]
       /sbin/telinit [ -t sekundy ] [ 0123456sSQqabcUu ]

OPIS

   Init
       Init  jest  przodkiem  wszystkich  procesów. Jego głównym zadaniem jest
       stworzenie procesów w oparciu o skrypt zapisany  w  pliku  /etc/inittab
       (patrz  też  inittab(5)).  Ten  plik zawiera zwykle pozycje, które każą
       procesowi init pomnażać getty na każdej  linii,  na  które  użytkownicy
       mogą   się  zalogować.  Kontroluje  też  samodzielne  procesy,  których
       istnienie jest konieczne w danym systemie.

POZIOMY PRACY

       Runlevel (poziom pracy) jest to  konfiguracja  oprogramowania  systemu,
       która  pozwala  zaistnieć  tylko  wytypowanym  grupom procesów. Procesy
       tworzone przez init dla każdego z tych poziomów są zdefiniowane w pliku
       /etc/inittab.  Init  może  być w jednym z ośmiu poziomów pracy: 0-6 i S
       lub s. Poziom pracy jest zmieniany  przez  uruchomienie  telinit  przez
       uprzywilejowanego  użytkownika.   telinit wysyła odpowiednie sygnały do
       init, mówiące, w jaki tryb ma przejść.

       Tryby pracy 0, 1, oraz 6 są zarezerwowane.  Tryb  0  jest  używany,  by
       zatrzymać  system, tryb 6, by przeładować system (reboot), a tryb 1, by
       wprowadzić system w tryb pracy jednego użytkownika (single-user  mode).
       Tryb  S  nie  jest  pomyślany dokładnie tak, by go używać bezpośrednio,
       lecz raczej dla skryptów wykonywanych przy wchodzeniu  w  tryb  1.  Aby
       uzyskać  więcej  informacji na ten temat, zobacz strony podręcznika dla
       shutdown(8) i inittab(5).

       Tryby pracy 7-9 też są poprawne,  choć  niezbyt  udokumentowane.  To  z
       powodu  "tradycyjnych"  wariantów  Uniksa  nie  używających ich.  Jeśli
       jesteś ciekaw, to wiedz, że poziomy S i s  są  w  rzeczywistości  takie
       same.  Wewnętrznie są to tylko zastępcze nazwy dla takich samych trybów
       pracy.

BOOTOWANIE

       Po tym jak init jest wywołany w  ostatnim  kroku  sekwencji  bootującej
       jądra,  szuka  pliku  /etc/inittab  w  celu znalezienia w nim pola typu
       initdefault (patrz też inittab(5)). Pole initdefault określa początkowy
       poziom  pracy  systemu.  Jeśli  nie  ma tam takiego pola (lub wcale nie
       istnieje  /etc/inittab),  poziom  pracy  musi  być  podany  z   konsoli
       systemowej.

       Poziom S lub s wprowadza system w tryb jednego użytkownika i nie wymaga
       pliku /etc/initttab. W  trybie  jednego  użytkownika,  wywoływany  jest
       /sbin/sulogin na urządzeniu /dev/console.

       Podczas  wchodzenia  w  tryb  jednego użytkownika, proces init inicjuje
       ustawienia stty konsoli na bezpieczne  wartości.  Ustawiany  jest  tryb
       clocal. Prędkość sprzętu i handshaking nie są zmieniane.

       Podczas  wchodzenia  w  tryb  wielu  użytkowników po raz pierwszy, init
       wykonuje  pozycje  boot  i  bootwait,  by  pozwolić   systemom   plików
       zamontować  się  zanim  użytkownicy  będą  mogli  się  zalogować. Potem
       wykonywane są wszystkie pozycje przypisane danemu poziomowi pracy.

       Kiedy nowy proces startuje, init sprawdza najpierw, czy  istnieje  plik
       /etc/initscript. Jeśli tak, używa tego skryptu by ten proces zacząć.

       Za  każdym razem, gdy proces potomny się zakończy, init zapamiętuje ten
       fakt  i  powód  śmierci  procesu  jest  zapisany  w   /var/run/utmp   i
       /var/log/wtmp, pod warunkiem, że te pliki istnieją.

ZMIENIANIE TRYBÓW PRACY

       Po  tym jak "namnożone" zostaną wszystkie wyszczególnione procesy, init
       czeka na śmierć każdego swojego procesu potomnego, sygnał braku energii
       lub  zasygnalizowanie  przez  telinit zmiany poziomu działania systemu.
       Gdy wystąpi jeden spośród tych  trzech  warunków,  ponownie  sprawdzany
       jest  plik  /etc/inittab, ponieważ nowe pola mogą być do niego dodane w
       każdej chwili. Jednakowoż, init wciąż oczekuje na wystąpienie jednego z
       tych  trzech  warunków. By przygotować się na natychmiastową odpowiedź,
       telinit Q albo użyta komenda q może obudzić proces init, by jeszcze raz
       przeczytał plik /etc/inittab.

       Jeśli  init  nie  jest  w  trybie  jednego użytkownika i odbiera sygnał
       zaniku  energii  (SIGPWR),  czyta  plik   /etc/powerstatus.   Następnie
       uruchamia polecenie zależne od zawartości tego pliku:

       F(AIL) Zawodzi  zasilanie, UPS dostarcza mocy. Wykonuje wpisy powerwait
              i powerfail.

       O(K)   Zasilanie powróciło, uruchamia wpisy powerokwait.

       L(OW)  Zasilanie zawodzi, a UPS-owi wyczerpuje  się  bateria.  Wykonuje
              wpisy powerfailnow.

       Jeżeli  plik /etc/powerstatus nie istnieje lub zawiera cokolwiek innego
       niż jedną z liter F, O lub L, init zachowa się tak, jakby przeczytał F.

       Używanie  SIGPWR i /etc/powerstatus nie jest zalecane. Jeżeli ktoś chce
       współdziałać z init-em, powinien użyć kanału  kontroli  /dev/initctl  -
       proszę  przeczytać kod źródłowy pakietu sysvinit po więcej dokumentacji
       dotyczącej tego kanału.

       Gdy init jest  proszony  o  zmianę  poziomu  działania,  wysyła  sygnał
       ostrzegawczy  SIGTERM do wszystkich procesów, które nie są zdefiniowane
       w nowym poziomie pracy. Potem czeka 5 sekund zanim "na  siłę"  zakończy
       te  procesy  poprzez  sygnał  SIGKILL.   Zauważ,  że  init  zakłada, że
       wszystkie te procesy (i ich  potomki)  pozostają  w  tej  samej  grupie
       procesów, którą init oryginalnie im utworzył. Jeżeli jakikolwiek proces
       zmienił swą przynależność  do  grupy  procesów  to  nie  odbierze  tych
       sygnałów.  Tego  typu  procesy  muszą  być  kończone osobno (np. demony
       wszelakie - przyp. tłum.).

TELINIT

       /sbin/telinit jest symbolicznym dowiązaniem do /sbin/init.  Pobiera  on
       jednoznakowy  argument  i  sygnały  init, by podjął stosowne działanie.
       Poniższe argumenty można stosować jako rozkazy dla telinit:

       0,1,2,3,4,5 lub 6
              mówią  procesowi  init  by  przełączył   w   odpowiedni   poziom
              działania.

       a,b,c  każą   procesowi   init  by  przetwarzał  tylko  te  pola  pliku
              /etc/inittab, które odnoszą się do poziomu pracy a,b lub c.

       Q lub q
              każą procesowi init jeszcze raz przeczytać plik /etc/inittab.

       S lub s
              mówią żeby init przełączył w tryb jednego użytkownika.

       U lub u
              każą procesowi init przeładować się  (zachowując  obecny  stan).
              Nie  występuje  ponowne  odczytywanie pliku /etc/inittab. Poziom
              pracy powinien być ustawiony na Ss12345,  w  przeciwnym  wypadku
              żądanie może być "delikatnie" zignorowane.

       telinit  może  także  powiedzieć  procesowi init, jak długo powinien on
       czekać między wysyłaniem sygnałów SIGTERM i SIGKILL. Domyślną wartością
       jest 5 sekund, ale może być ona zmieniona za pomocą opcji -t sekundy.

       telinit może być wywoływany tylko przez użytkowników uprzywilejowanych.

       Wywołany init sprawdza czy jest procesem inicjującym init czy też  jest
       wywołany  jako  telinit  poprzez  wgląd  w  swój identyfikator procesu;
       prawdziwy identyfikator procesu init ma zawsze wartość  1.   Teraz  już
       wiadomo, że zamiast wywoływać telinit możesz też po prostu użyć init, a
       nie skrótu.

ŚRODOWISKO

       Init ustawia następujące zmienne  środowiskowe  dla  wszystkich  swoich
       dzieci:

       PATH   /usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin

       INIT_VERSION
              Jak  mówi  nazwa  -  wersja  programu. Użyteczne dla określenia,
              jeśli skrypt uruchamia się bezpośrednio z init.

       RUNLEVEL
              Obecny poziom pracy systemu.

       PREVLEVEL
              Poprzedni poziom pracy systemu (użyteczne po zmianie  poziomów).

       CONSOLE
              Konsola  systemu.  Tak  naprawdę  ta wartość jest przyjmowana od
              jądra; jednak jeśli nie jest ustawiona init ustawi ją  domyślnie
              na /dev/console.

FLAGI STARTOWE

       Jest  możliwe  by  przekazać  pewne  flagi  do  procesu init z monitora
       startowego (np. LILO). Init dopuszcza stosowanie następujących flag:

       S, single
            Bootowanie w trybie jednego użytkownika. W tym trybie /etc/inittab
            jest  sprawdzany  (wczytywany)  i  skrypty  startowe  rc są zwykle
            uruchamiane   zanim   wystartuje   powłoka   dla   trybu   jednego
            użytkownika.

       1-5  Poziom działania w jakim system ma wystartować.

       -b, emergency
            Wejście  bezpośrednio  w tryb jednego użytkownika bez uruchamiania
            żadnych innych skryptów startowych.

       -a, auto
            Program ładujący LILO dodaje słowo "auto" do linii poleceń, jeżeli
            uruchomił  jądro  z  domyślną  linią  poleceń  (użytkownik jej nie
            zmieniał).   Jeżeli  init  znajdzie  to  słowo,   ustawi   zmienną
            środowiskową  "AUTOBOOT"  na  "yes". Proszę zauważyć, że nie można
            tego użyć jako środka bezpieczeństwa - oczywiści  użytkownik  mógł
            ręcznie w linii poleceń wpisać "auto" użyć opcji -a.

       -z xxx
            Argument  opcji  -z  jest ignorowany. Może być użyta do wydłużenia
            linii poleceń, tak żeby zajmowała więcej miejsca na  stosie.  Init
            może  wtedy  manipulować  linią poleceń, tak żeby ps(1) pokazywało
            bieżący tryb uruchomienia.

INTERFEJS

       Init nasłuchuje wiadomości na łączu fifo w /dev, /dev/initctl.  Telinit
       używa  tego do komunikacji z procesem init. Ten interfejs nie jest zbyt
       dobrze   udokumentowany   czy   skończony.    Zainteresowani    powinni
       przestudiować  plik  initreq.h  w  podkatalogu src/ archiwum tarowego z
       kodem źródłowym init.

SYGNAŁY

       Init reaguje na następujące sygnały:

       SIGHUP
            Ma ten sam efekt co telinit q.

       SIGUSR1
            Po odebraniu tego sygnału, init zamyka i  ponownie  otwiera  swoją
            kontrolkę  fifo,  /dev/initctl.  Użyteczne  w  przypadku  skryptów
            startowych, gdy przemontowywany jest katalog /dev.

       SIGINT
            Zwykle  ten  sygnał  jest  wysyłany  z  jądra  by  powiedzieć,  że
            wciśnięta  została  kombinacja  klawiszy CTRL-ALT-DEL. Powoduje to
            rozpoczęcie akcji ctrlaltdel.

       SIGWINCH
            Jądro  wysyła  ten   sygnał   jeśli   wciśnięty   został   klawisz
            KeyboardSignal.  Aktywuje to akcję kbrequest.

ZGODNE Z

       Init  jest  kompatybilny  z  init  obecnym  System  V.  Działa razem ze
       skryptami  w  katalogach  /etc/init.d  i   /etc/rc{poziom_dziaania}.d.
       Jeśli  twój  system  używa  tej  konwencji, to powinien być obecny plik
       README w katalogu /etc/init.d wyjaśniający, jak te skrypty działają.

PLIKI

       /etc/inittab
       /etc/initscript
       /dev/console
       /var/run/utmp
       /var/log/wtmp
       /dev/initctl

UWAGI

       Init zakłada, że procesy i ich procesy potomne pozostają  w  tej  samej
       grupie  procesów,  która  była  dla  nich oryginalnie stworzona. Jeżeli
       jakikolwiek proces zmienił swą przynależność do  grupy  procesów,  init
       nie  może  ich zabić i może skończyć się na tym, że zostaną dwa procesy
       czytające z jednej linii terminala.

DIAGNOSTYKA

       Jeśli init  zorientuje  się,  że  wciąż  powtarza  namnażanie  zadanego
       procesu częściej niż 10 razy w ciągu 2 minut, wtedy założy, że gdzieś w
       wywołaniu komendy jest błąd,  wyśle  wiadomość  o  błędzie  na  konsolę
       systemu, i przerwie pomnażanie danego pola do upłynięcia 5 minut lub do
       odebrania sygnału. Zapobiega to "zjadaniu"  zasobów  systemu  gdy  ktoś
       popełni  błąd  typograficzny (bardziej po naszemu: "literówkę" - przyp.
       tłum.) w pliku /etc/inittab lub gdy program normalnie  uruchamiany  dla
       danego wpisu jest usunięty.

AUTOR

       Miquel  van  Smoorenburg  (miquels@cistron.nl),  pierwszą wersję strony
       podręcznika             napisał             Michael              Haardt
       (u31b3hs@pool.informatik.rwth-aachen.de).

PATRZ TAKŻE

       getty(1),   login(1),   sh(1),   runlevel(8),   shutdown(8),   kill(1),
       inittab(5), initscript(5), utmp(5)

                                 19 lipca 2004                         INIT(8)