Provided by: manpages-pl_0.7-2_all bug

NAZWA

       init, telinit - sterowanie procesu inicjującego

SKŁADNIA

       /sbin/init [ -a ] [ -s ] [ -b ] [ -z xxx] [ 0123456Ss ]
       /sbin/telinit [ -t SEKUNDY ] [ 0123456sSQqabcUu ]
       /sbin/telinit [ -e ZMIENNA[=WARTOŚĆ] ]

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 (inaczej 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 S, 0, 1, oraz 6 są zarezerwowane. Tryb S jest używany do zainicjowania systemu, podczas  jego
       rozruchu.  Gdy  uruchamiany  jest  tryb  pracy S (w czasie rozruchu) lub tryb pracy 1 (przełączanie się z
       trybu wielu użytkowników), system jest wprowadzany w tryb pracy jednego użytkownika ("single-user mode"),
       po  którym  bieżącym  poziomem  pracy  jest  S.  Tryb  0  jest  używany,  by zatrzymać system; tryb 6, by
       przeładować system (reboot).

       Po zakończeniu rozruchu w poziomie S, system jest  automatycznie  wprowadzany  w  jeden  z  trybów  wielu
       użytkowników,  od 2 do 5, chyba że wystąpił problem, który musi zostać naprawiony przez administratora, w
       trybie jednego użytkownika. Po przejściu w tryb jednego  użytkownika  administrator  zwykle  zajmuje  się
       konserwacją, a następnie przeładowuje system.

       Aby  uzyskać  więcej  informacji  na ten temat, proszę zapoznać się ze stronami podręcznika shutdown(8) i
       inittab(5).

       Tryby pracy 7-9 również  są  poprawne,  choć  niezbyt  dobrze  udokumentowane.  Wynika  to  z  faktu,  że
       "tradycyjne" warianty Uniksa nie używają ich.

       Poziomy  S  i  s są w rzeczywistości takie same.  Wewnętrznie są to tylko zastępcze nazwy dla tego samego
       trybu pracy.

ROZRUCH

       Po tym jak init jest wywołany w ostatnim kroku sekwencji rozruchowej 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 initem, powinien
       użyć  kanału  kontroli  /run/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 Ss0123456, 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.

       telinit  -e  mówi procesowi init, aby zmienił środowisko procesów, które mnoży. Argumenty do -e mogą mieć
       postać ZMIENNA=WARTOŚĆ, która ustawia zmiennej ZMIENNA wartość WARTOŚĆ  lub  postać  ZMIENNA  (bez  znaku
       równości), która usuwa zmienną ZMIENNA.

       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   /bin:/usr/bin:/sbin:/usr/sbin

       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, S, single
            Rozruch 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 /run, /run/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, /run/initctl.

       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_działania}.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
       /run/initctl

OSTRZEŻENIA

       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 jednego wiersza terminala.

       W systemie Debian, wejście w poziom pracy 1 powoduje zabicie wszystkich procesów z wyjątkiem wątków jądra
       i skryptu który wykonuje zabijanie oraz innych procesów  w  jego  sesji.  W  konsekwencji,  powracanie  z
       poziomu  1  do  poziomu  pracy  trybu  wielu  użytkowników  nie  jest  bezpieczne:  demony, które zostały
       uruchomione w poziomie S i są wymagane do normalnego działania nie są dłużej uruchomione. System powinien
       zostać uruchomiony ponownie.

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 literówkę 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).

ZOBACZ TAKŻE

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

TŁUMACZENIE

       Tłumaczenie opisuje tradycyjną wersję init z  SystemV,  używaną  domyślnie  przez  Debiana.  W  przypadku
       korzystania  z  init  udostępnianego  przez  wywodzący  się  z Ubuntu upstart, proszę wydać polecenie man
       --locale=C 8 init, aby zapoznać się z właściwym opisem w języku angielskim.

       Autorami   polskiego   tłumaczenia   niniejszej   strony   podręcznika   man   są:   Paweł   Wilk   (PTM)
       <siewca@dione.ids.pl>,     Robert     Luberda     (PTM)     <robert@debian.org>     i    Michał    Kułach
       <michal.kulach@gmail.com>.

       Polskie tłumaczenie jest częścią  projektu  manpages-pl;  uwagi,  pomoc,  zgłaszanie  błędów  na  stronie
       http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją  2.88 oryginału.

                                                  29 lipca 2004                                          INIT(8)