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: 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_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
       /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  może
       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)