Portál AbcLinuxu, 1. května 2025 16:17

System V init

System V init používá inicializační skripty uložené v adresáři /etc/init.d Jednoduchý init skript by mohl vypadat například takto:
#! /bin/sh -e
case "$1" in
  start)
    echo "Startuji službu..."
    # zde doplnit příkazy, kterými se služba spouští
    ;;
  stop)
    echo "Ukončuji službu..."
    # zde doplnit příkazy, které službu ukončí
    ;;
  restart)
    $0 stop
    sleep 1
    $0 start
    ;;
  *)
    echo "Použití: /etc/init.d/sluzba.sh {start|stop|restart}"
    exit 1
esac

exit 0
Takovýto skript může například spouštět nějakého démona nebo nastavovat pravidla pro firewall. Je možné jej spouštět jak ručně, tak automaticky.

O automatické spouštění se postará program init při změně runlevelu (tj. i při bootování a vypínání počítače)

Když init přechází do nějakého runlevelu, prohledá adresář /etc/rcN.d (kde N je nahrazeno číslem runlevelu, do kterého se přechází). Tento adresář obsahuje symbolické odkazy na skripty umístěné v /etc/init.d.

Jméno každého symbolického odkazu určuje, jestli init skript má danou službu spustit (symlink začíná na S), ukončit (začíná na K) nebo se nemá dělat nic (začíná na X).

Následují dvě číslice, které udávají pořadí, v jakém se init skripty spouštějí - čím nižší číslo, tím dřív se init skript provede.

Jméno je ukončeno libovolným řetězcem znaků. Symlink, který naši službu spouští, by se tedy mohl jmenovat například S70sluzba, spuštění služby v runlevelech 3, 4 a 5 zajistíme vytvořením symbolických odkazů takto:
# cd /etc/rc3.d
# ln -s ../init.d/sluzba.sh S70sluzba
# cd ../rc4.d
# ln -s ../init.d/sluzba.sh S70sluzba
# cd ../rc5.d
# ln -s ../init.d/sluzba.sh S70sluzba
Ukončení služby při vypnutí a restartu počítače (runlevely 0 a 6) zajistíme takto:
# cd /etc/rc0.d
# ln -s ../init.d/sluzba.sh K30sluzba
# cd ../rc6.d
# ln -s ../init.d/sluzba.sh K30sluzba
Všimněte si, že číslo udávající pořadí je jiné (30 = 100 - 70). Dá se totiž předpokládat, že čím později jsme službu spouštěli, tím dřív ji budeme chtít ukončit - vhodným číslováním se řeší závislosti mezi službami - služba, která je závislá na jiné, se spouští, až když všechny závislosti již běží.

(Příklad: provozujeme webový server Apache a stránky využívají databázi MySQL. Démon mysqld je tedy nutné spustit dřív než Apache a naopak Apache je nutné ukončit dřív než mysqld).

Ruční spuštění nebo zastavení služby můžeme provést příkazy
# /etc/init.d/sluzba.sh start
a
# /etc/init.d/sluzby.sh stop
System V init používá mnoho distribucí, není to však jediný způsob organizace init skriptů.

Dokument vytvořil: trekker.dk, 8.2.2007 02:51 | Poslední úprava: Prcek, 21.3.2009 08:01 | Historie změn | Zobrazeno: 1507×

Další pojmy: symetrický NAT - symlink - SysRQ - System V init - systemd - tab - tablet

Filtr: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.