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)