Gestione e creazione di servizi in Debian: differenze tra le versioni
S3v (discussione | contributi) Nessun oggetto della modifica |
|||
Riga 1: | Riga 1: | ||
{{Versioni compatibili|Tutte le versioni di Debian|}} | {{Versioni compatibili|Tutte le versioni di Debian|}} | ||
=Introduzione= | =Introduzione= | ||
La maggior parte dei servizi installati su un sistema Debian GNU/Linux viene avviata e fermata tramite un apposito script che si trova sotto la directory < | La maggior parte dei servizi installati su un sistema Debian GNU/Linux viene avviata e fermata tramite un apposito script che si trova sotto la directory <code>/etc/init.d/</code>.<br> | ||
Ad esempio, per avviare il servizio MySQL occorre dare (come utente root) questo comando: | Ad esempio, per avviare il servizio MySQL occorre dare (come utente root) questo comando: | ||
<pre> | <pre> | ||
# /etc/init.d/mysql start | # /etc/init.d/mysql start | ||
</pre> | </pre> | ||
e per fermare il servizio | e per fermare il servizio: | ||
<pre> | <pre> | ||
# /etc/init.d/mysql stop | # /etc/init.d/mysql stop | ||
Riga 12: | Riga 12: | ||
=Come si creano gli script di avvio= | =Come si creano gli script di avvio= | ||
Per creare uno script di avvio per un servizio, è sufficiente creare un nuovo file sotto la directory < | Per creare uno script di avvio per un servizio, è sufficiente creare un nuovo file sotto la directory <code>/etc/init.d/</code> e poi editarlo con un qualsiasi editor di testi.<br> | ||
Ogni script di avvio che si rispetti ha almeno una sezione nella quale controlla i parametri che gli sono stati passati e altre in cui si occupa poi di eseguire un diverso comando a seconda del parametro passato. | Ogni script di avvio che si rispetti ha almeno una sezione nella quale controlla i parametri che gli sono stati passati e altre in cui si occupa poi di eseguire un diverso comando a seconda del parametro passato. | ||
<br> | <br> | ||
Riga 19: | Riga 19: | ||
#!/bin/sh | #!/bin/sh | ||
</pre> | </pre> | ||
La selezione del comando da eseguire viene fatta attraverso un semplice case/esac di Bash.<br> | La selezione del comando da eseguire viene fatta attraverso un semplice <code>case/esac</code> di Bash.<br> | ||
Un esempio di script è riportato nel listato seguente: | Un esempio di script è riportato nel listato seguente: | ||
<pre> | <pre> | ||
Riga 101: | Riga 101: | ||
=Eliminazione di un servizio= | =Eliminazione di un servizio= | ||
Nel caso in cui il nostro servizio < | Nel caso in cui il nostro servizio <code>mio_script_start.sh</code> non dovesse più esserci utile dobbiamo rimuoverlo dalla directory init: | ||
<pre> | <pre> | ||
# rm /etc/init.d/mio_script_start.sh | # rm /etc/init.d/mio_script_start.sh |
Versione delle 00:50, 30 gen 2010
Versioni Compatibili ERRORE: valore non valido ( Tutte le versioni di Debian )! Vedi qui. |
Introduzione
La maggior parte dei servizi installati su un sistema Debian GNU/Linux viene avviata e fermata tramite un apposito script che si trova sotto la directory /etc/init.d/
.
Ad esempio, per avviare il servizio MySQL occorre dare (come utente root) questo comando:
# /etc/init.d/mysql start
e per fermare il servizio:
# /etc/init.d/mysql stop
Come si creano gli script di avvio
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.
Ogni script di avvio che si rispetti ha almeno una sezione nella quale controlla i parametri che gli sono stati passati e altre in cui si occupa poi di eseguire un diverso comando a seconda del parametro passato.
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 di script è riportato nel listato seguente:
#!/bin/bash ### BEGIN INIT INFO # Provides: mio_start_script.sh # Required-Start: hal # Required-Stop: # Should-Start: # Should-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Attivazione ottimizzazioni Notebook # Description: Attivazione ottimizzazioni Notebook ### END INIT INFO case "$1" in start) echo "Attivo ottimizzazioni Notebook:" echo -e "\n1) abilito risparmio energetico per ac97" echo 1 > /sys/module/snd_ac97_codec/parameters/power_save echo -e "\n\n2) controllo se hdparm è installato correttamente" test -f /sbin/hdparm || exit 0 echo -e "\n2.1) abilito il MultiCount16" hdparm -m16 /dev/hde echo -e "\n2.2) abilito l'accesso a 32 bit" hdparm -c3 /dev/hde echo -e "\n2.3) abilito il buffer a 2048" hdparm -a2048 /dev/hde ;; stop) echo "Non ancora implementato" ;; restart) echo "Non ancora implementato" ;; reload|force-reload) echo "Non ancora implementato" ;; *) echo "Usage: /etc/init.d/mio_start_script.sh {start|stop|restart|reload|force-reload}" exit 2 ;; esac exit 0
update-rc.d
Una volta creato lo script bisogna renderlo automatico. 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
Io consiglio fortemente di scegliere la seconda strada.
Innanzitutto rendiamo eseguibile il nostro script:
# chmod +x /etc/init.d/mio_start_script.sh
Quindi diamo il comando:
# update-rc.d <nome_script_in_init.d> default <priorità_start> <priorità_stop>
dove:
<nome_script_in_init.d>
nel nostro caso èmio_script_start.sh
;<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.
Ad esempio:
# update-rc.d mio_script_start.sh 10 50
restituisce come output:
Adding system startup for /etc/init.d/mio_script_start.sh ... /etc/rc0.d/K50mio_script_start.sh -> ../init.d/mio_script_start.sh /etc/rc1.d/K50mio_script_start.sh -> ../init.d/mio_script_start.sh /etc/rc6.d/K50mio_script_start.sh -> ../init.d/mio_script_start.sh /etc/rc2.d/S10mio_script_start.sh -> ../init.d/mio_script_start.sh /etc/rc3.d/S10mio_script_start.sh -> ../init.d/mio_script_start.sh /etc/rc4.d/S10mio_script_start.sh -> ../init.d/mio_script_start.sh /etc/rc5.d/S10mio_script_start.sh -> ../init.d/mio_script_start.sh
Se non volessimo addentrarci nell'argomento priorità di avvio, il mio consiglio è di usare l'opzione defaults
; in questo modo sarà la nostra Debian ad assicurarsi che il servizio venga installato nei vari slot di priorità in maniera automatica.
# update-rc.d mio_script_start.sh defaults
Eliminazione di un servizio
Nel caso in cui il nostro servizio mio_script_start.sh
non dovesse più esserci utile dobbiamo rimuoverlo dalla directory init:
# rm /etc/init.d/mio_script_start.sh
Dobbiamo però eliminare anche i relativi link simbolici (che non avrebbero più effetto), con il comando:
# update-rc.d -f mio_script_start.sh remove