Provided by: manpages-pl_20060617-4_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: 06 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)

INFORMACJE O TŁUMACZENIU

       Powyższe   tłumaczenie   pochodzi   z   nieistniejącego   już  Projektu
       Tłumaczenia Manuali i moe nie by aktualne. W razie zauważenia  różnic
       między powyższym opisem a rzeczywistym zachowaniem opisywanego programu
       lub funkcji, prosimy o zapoznanie się z oryginalną  (angielską)  wersją
       strony podręcznika.

                                 19 lipca 2004                         INIT(8)