Home > eTRAYz > eTRAYz – Avvio applicazioni al boot di sistema

eTRAYz – Avvio applicazioni al boot di sistema

Quello che ci proponiamo di capire in questo articolo è come funziona l’avvio automatico delle applicazione al boot dell’etrayz, e cioè come funzionano in generale i runlevels di linux.

 

Se vi interessa mettere le mani sul boot di linux, in generale, è bene sapere cosa sono i runlevels.
Un runlevel è uno stato del sistema in cui possono venire compiute solo determinate operazioni.

I runlevel in linux sono sette, enumerati da 0 a 6 ( sebbene esistano anche il 7, l’8 ed il 9 che però i normali Unix (e Linux con loro) non utilizzano).
Non esiste uno standard su cosa rappresenti ogni singolo runlevel, anche se alcuni sono riservati ed in generale si ha:

  • Runlevel 0: /etc/rc0.d avvia la sequenza di arresto del sistema (shutdown).
  • Runlevel 1: /etc/rc1.d è detto Single user mode (“modalità ad utente singolo”): in questo stato non vi sono programmi in esecuzione in background, e nessun utente oltre all’amministratore ha accesso al sistema, per cui esso è sotto il suo pieno controllo. È utile, ad esempio, per eseguire attività di manutenzione come controlli sui dischi o aggiornare file di sistema, dato che vi è la certezza che nessun processo li stia utilizzando e che nessun utente possa intervenire all’insaputa dell’amministratore.
  • Runlevel 2: /etc/rc2.d Per l’utente .
  • Runlevel 3: /etc/rc3.d Per l’utente. Il 3 è il runlevel di default sull’eTRAYz.
  • Runlevel 4: /etc/rc4.d Per l’utente.
  • Runlevel 5: /etc/rc5.d Per l’utente.
  • Runlevel 6: /etc/rc6.d Il runlevel 6 è quello di reboot.  La macchina viene riavviata.

Gli script che di fatto permettono di gestire l’avvio o lo stop di un servizio sono in realtà nella directory /etc/init.d/ (in questa cartella sono conservati i file binari, eseguibili, dei demoni installati) e possono essere utilizzati direttamente dall’utente per gestire i singoli processi.

I file presenti nelle cartelle dei runlevels /etc/rcX.d (X è il numero del runlevel) sono in realtà dei link (“symlink“) agli script nella cartella /etc/init.d/
Noterete che tali link sono preceduti da una S (“start”) o una K (“Kill”), seguite da un numero.

Le applicazioni precedute da “S” verranno avviate nel relativo runlevel, mentre quelle precedute da “K” verranno ovviamente killate.

Il numero di seguito alla lettera S oK rappresenta invece l’ordine con cui la sequenza degli script verrà eseguita all’interno di ogni runlevel.

 

ESEMPIO

 

Per fare un esempio supponiamo di avere lo script asterisk.sh per eseguire sul nostro etrayz l’applicazione asterisk (come visto in altro articolo)

ovviamente lo script si troverà in  /etc/init.d/asterisk.sh.

Per come sono strutturati in genere questi script potremo eseguire manualmente i comandi:

/etc/init.d/asterisk start avvia Asterisk

/etc/init.d/asterisk stop ferma Asterisk

/etc/init.d/asterisk restart ferma e riavvia Asterisk

Per fare in modo che il nostro script Asterisk venga avviato in automatico ogni volta che si riavvia l’eTRAYz, dovremmo creare diversi symlink,  digitando i seguenti comandi:

ln -s /etc/init.d/asterisk /etc/rc0.d/K99asterisk
ln -s /etc/init.d/asterisk /etc/rc1.d/K99asterisk
ln -s /etc/init.d/asterisk /etc/rc2.d/K99asterisk
ln -s /etc/init.d/asterisk /etc/rc3.d/K99asterisk
ln -s /etc/init.d/asterisk /etc/rc4.d/K99asterisk
ln -s /etc/init.d/asterisk /etc/rc5.d/K99asterisk
ln -s /etc/init.d/asterisk /etc/rc6.d/K99asterisk

ln -s /etc/init.d/asterisk /etc/rc3.d/S99asterisk

In questo modo, all’avvio dell’eTRAYz,  lo script asterisk verrà eseguito all’interno del runlevel 3 con priorità 99 (cioè per ultimo) con l’opzione S in modo da avviare asterisk.

 

ALTRO MODO DI AVVIO


Qualunque sia il runlevel usato, vi possono essere delle operazioni che voi eseguite spesso in riga di comando, e magari preferireste che il sistema all’avvio le eseguisse in automatico.

Oltre agli script in /etc/init.d/ c’è un’altro modo per far partire programmi al boot, infatti ad ogni avvio viene eseguito il file /etc/rc.local.

Se si vuol inserire un comando che richieda i privilegi di root e non abbia bisogno di esser lanciato con una precisa priorità, quella di /etc/rc.local è la soluzione più semplice.

Basterà infatti aggiungere il comando che vi interessa nel file /etc/rc.local inserendolo prima della riga “Exit 0”.

Annunci
  1. Non c'è ancora nessun commento.
  1. No trackbacks yet.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: