Jak umieścić swój skrypt w skryptach startowych.
Kategoria: FAQ, etykiety: insserv, skrypty, skrypty startowe, update-rc.d
Dodany: 2011-06-30 16:40
(zmodyfikowany: 2013-11-22 10:54)
Przez: ba10
Wyświetleń: 38990
W swoim skrypcie, który ma być startowym, zaraz po #!/bin/bash trzeba dodać nagłówek :
### BEGIN INIT INFO
# Provides: skrypt
# Required-Start: patrz_niżej_co tu dodać
# Required-Stop: patrz_niżej_co_tu_dodać
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: proba
# Description: Enable service provided by daemon.
### END INIT INFO
Gdy w sekcji Required dodamy :
$all – dopisane zostanie na samym końcu
$local_fs - montowanie systemów plików
$remote_fs - montowanie zdalnego systemu plików
$syslog – operacje logowania
$network - odpowiedzialne za "podniesienie" interfejsu sieciowego
i tak dalej.
Najlepiej dać $all gdyż będzie wtedy skrypt startował po wszystkich usługach. Nazwy z $ na początku oznacza, że są to grupy usług pod dana nazwą, startujące w jakiejś tam kolejności i zawarte w pliku konfiguracyjnym /etc/insserv.conf. I tak na przykład $network zawiera grupę usług gdzie znajduje się między innymi usługa networking. Każda usługa ma skrypt startujący zamieszczony w /etc/init.d i te skrypty uruchamiają dana usługę.
Zostawiając sekcje pustą, nasz skrypt dostaje „numer 01”, czyli jest dodawany na początku danego poziomu startu (runlevel).
Ważne żeby skrypty, od których jest uzależniony nasz skrypt, wystartowały pierwsze. Dlatego bezpiecznym wpisem w sekcji Required będzie :
Required-Start: $all
Required-Stop: $all
Jednak trzeba się zorientować czy skrypty te startują z niższym numerem niż nasz skrypt, jeśli z wyższym, należy odpowiednio nadać wyższy "numer startowy". Za każdy poziom startu są odpowiedzialne katalogi /etc/rc0.d , /etc/rc1.d, /etc/rc2.d, /etc/rc3.d, /etc/rc4.d, /etc/rc5.d, /etc/rc6.d. Katalog /etc/rc0.d i /etc/rc6.d są odpowiedzialne za zatrzymanie i przeładowanie systemu. Odpowiadają one poziomom startu, który w Debianie wygląda tak :
Runlevel 0 - Stop
Runlevel 1 - Odpalenie systemu jako single-user.
Runlevels 2-5 - Odpalenie multi-user.
Runlevel 6 - Przeładowanie systemu.
Do "startu" dodajesz skrypt będąc w katalogu /etc/init.d/ i wydając komende :
update-rc.d moj_skrypt.sh defaults
A jeśli to debian 6.0 i wyżej to polecenie :
insserv moj_skrypt.sh
Usuwanie skryptu można zrobić poprzez polecenie :
update-rc.d -f moj_skrypt.sh remove