Howto Creare Script di Avvio su Debian
Da PtLUG Wiki.
Contents |
Introduzione
Come avrete notato, la maggior parte dei servizi che sono installati su un sistema Linux (in particolare su Debian) vengono avviati e fermati tramite un apposito script che si trova sotto la directory /etc/init.d/
Per avviare il servizio MySQL ad esempio occorre dare questo comando:
/etc/init.d/mysql start
e per fermare il servizio
/etc/init.d/mysql stop
Come si creano
Per creare uno script di avvio per un servizio, è sufficiente creare un nuovo file sotto la directory /etc/init.d/ e poi editarlo con un qualsiasi editor di testi.
Come sono fatti
Ogni script di avvio che si rispetti, ha almeno una sezione nella quale controlla i parametri che gli sono stati passati e si occupa di eseguire un diverso comando a seconda appunto del parametro che gli è stato passato: start oppure stop ad esempio.
Come per ogni script, anche per questi bisogna indicare nella prima riga l'interprete che deve essere utilizzato per eseguirli, ad esempio:
#!/bin/sh
La selezione del comando da eseguire viene fatta attraverso un semplice case/esac di Bash.
Un esempio completo
Nel mio caso avevo bisogno di uno script che gestisse l'avvio dell'utility fan, avendo la necessità, ahimè, di tenere sempre accesa la ventolina del mio notebook. Qui sotto trovate l'esempio completo:
#!/bin/sh -e
#
# fan manage the state of fan for Toshiba notebooks, using the 'fan' utility included in toshutils
#
case "$1" in
start)
/usr/bin/fan -n >&2
/usr/bin/fan -d >&2
;;
stop)
killall -w fan >&2
fan -f >&2
;;
smart)
/usr/bin/fan -n >&2
/usr/bin/fan -s >&2
;;
*)
echo "Usage: $0 {start|stop|smart}" >&2
exit 1
;;
esac
update-rc.d
Per automatizzare lo start e lo stop di un servizio si possono scegliere 2 strade:
- si creano i vari link simbolici per stoppare e far partire nelle rispettive directory /etc/rcN.d
- si utilizza il più comodo comando update-rc.d:
update-rc.d <nome_script_in_init.d> default <priorità_start> <priorità_stop>
dove:
- <nome_script_in_init.d> nel nostro caso è fan;
- <priorità_start> il numero di sequenza che decide l'ordine con cui eseguire lo script quando va avviato;
- <priorità_stop> il numero di sequenza che decide l'ordine con cui eseguire lo script quando va stoppato.ok
# update-rc.d prova defaults 10 50 Adding system startup for /etc/init.d/prova ... /etc/rc0.d/K50prova -> ../init.d/prova /etc/rc1.d/K50prova -> ../init.d/prova /etc/rc6.d/K50prova -> ../init.d/prova /etc/rc2.d/S10prova -> ../init.d/prova /etc/rc3.d/S10prova -> ../init.d/prova /etc/rc4.d/S10prova -> ../init.d/prova /etc/rc5.d/S10prova -> ../init.d/prova






