Conosci Linux: la directory /etc/init.d

Se usi Linux avrai probabilmente sentito parlare della directory init.d. Ma cosa fa esattamente questa directory? Alla fine fa una cosa, ma fa quella per l'intero sistema, quindi init.d è molto importante. La directory init.d contiene numerosi script di avvio / arresto per vari servizi sul sistema. Tutto da acpid a x11-common è controllato da questa directory. Ovviamente non è esattamente così semplice.

Se guardi la directory / etc troverai le directory che sono nel formato rc # .d (dove # è un numero riflette un livello di inizializzazione specifico - da 0 a 6). All'interno di ciascuna di queste directory è presente una serie di altri script che controllano i processi. Questi script inizieranno con una "K" o una "S". Tutti gli script "K" vengono eseguiti prima degli script "S". E a seconda di dove si trovano gli script determinerà quando vengono avviati gli script. Tra le directory i servizi di sistema lavorano insieme come una macchina ben oliata. Ma ci sono momenti in cui è necessario avviare o interrompere un processo in modo pulito e senza utilizzare i comandi kill o killall. È qui che la directory /etc/init.d è utile.

Ora se stai usando una distribuzione come Fedora potresti trovare questa directory in /etc/rc.d/init.d . Indipendentemente dalla posizione, serve allo stesso scopo.

Per controllare manualmente uno degli script in init.d devi avere accesso root (o sudo). Ogni script verrà eseguito come comando e la struttura del comando sarà simile a:

/etc/init.d/command OPTION

Dove comando è il comando effettivo da eseguire e OPZIONE può essere una delle seguenti:

  • inizio
  • fermare
  • ricaricare
  • ricomincia
  • force-reload

Molto spesso utilizzerai start, stop o restart. Quindi se vuoi fermare la tua rete puoi emettere il comando:

/etc/init.d/networking stop

Oppure, se apporti una modifica alla tua rete e devi riavviarla, puoi farlo con il seguente comando:

/etc/init.d/networking restart

Alcuni degli script init più comuni in questa directory sono:

  • networking
  • samba
  • apache2
  • ftpd
  • sshd
  • colombaia
  • mysql

Naturalmente ci possono essere degli script più usati nella tua directory - dipende da cosa hai installato. L'elenco sopra è stato preso da un'installazione di Ubuntu Server 8.10, quindi un'installazione desktop standard avrebbe alcuni script di tipo di rete in meno.

Ma per quanto riguarda /etc/rc.local

C'è una terza opzione che ho usato un po '. Questa opzione è lo script /etc/rc.local . Questo file viene eseguito dopo l'esecuzione di tutti gli altri script a livello di init, quindi è sicuro inserire vari comandi che si desidera emettere all'avvio. Molte volte inserirò istruzioni di montaggio per cose come nfs in questo script. Questo è anche un buon posto per inserire script di "risoluzione dei problemi". Ad esempio, una volta avevo una macchina che, per qualche motivo, samba sembrava non voler iniziare. Anche dopo aver verificato che il demone Samba sia stato configurato per l'inizializzazione all'avvio. Quindi, invece di passare tutto il mio tempo in anticipo con questo, ho semplicemente messo la linea:

/etc/init.d/samba start

nello script /etc/rc.local e Samba ha funzionato come un fascino. Alla fine sarei tornato e avrei risolto il problema.

Pensieri finali

Linux è flessibile. Linux è così flessibile che ci sono quasi, inevitabilmente, numerosi modi per risolvere un singolo problema. L'avvio di un servizio di sistema è uno di questi problemi. Con l'aiuto del sistema /etc/init.d (così come /etc/rc.local ) puoi essere certo che il tuo servizio inizierà.