Portál AbcLinuxu, 1. května 2025 16:17
/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 0Takový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: 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:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.