Portál AbcLinuxu, 29. října 2025 21:30
/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 S70sluzbaUkonč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 K30sluzbaVš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 starta
# /etc/init.d/sluzby.sh stopSystem 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: 1582×
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:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.