Conoscere i runlevels in Unix/Linux

Un runlevel, espressione che potrebbe essere traducibile in italiano con “modalità di esecuzione”, nella famiglia dei sistemi di tipo UNIX, indica  le varie modalità di avvio ed esecuzione del sistema operativo.

Nel mondo Unix ci sono due principali approcci al processo di avvio del sistema: quello usato da System V e quello, meno complesso ma meno flessibile, usato dai sistemi della famiglia BSD. Linux utilizza il metodo derivato da System V, che si basa su differenti runlevels, astrazioni a livello software per indicare diversi stati della macchina in cui possono (e devono) girare diversi programmi.

runlevels Unix/Linux

I livelli previsti secondo la Linux Standard Base (LSB) sono 7 (numerati da 0 a 6 perchè anche il primo ha una specifica funzione) ognuno ha una particolare caratteristica e funzione, come sintetizzato nella seguente tabella:

Runlevel 0 Avvia la sequenza di arresto del sistema (shutdown)
Runlevel 1 Rappresenta la modalità singolo utente, nessun altro utente può collegarsi, il servizio di rete è disabilitato.
Runlevel 2 Rappresenta lo stato multiutente, il servizio rete è attivo ma è disabilitato il file sharing.
Runlevel 3 Generalmente predefinito quando si opera in modalità testuale, tutti i servizi sono attivi
Runlevel 4 Inutilizzato, ma può essere dedicato ad un utilizzo da parte dell’utente
Runlevel 5 E’ il predefinito quando si vuole avviare Linux in modalità grafica
Runlevel 6 serve a riavviare la macchina (reboot)

Ad ogni runlevel corrisponde un apposito script di avvio situato nelle directory /etc/rc.d/

Il percorso completo per ognuno dei suddetti file è:

/etc/rc.d/rc0.d

/etc/rc.d/rc1.d

/etc/rc.d/rc2.d

/etc/rc.d/rc3.d

/etc/rc.d/rc4.d

/etc/rc.d/rc5.d

/etc/rc.d/rc6.d

Al nome di ogni script contenente un determinato numero corrisponde il relativo runlevel. Il comportamento dei suddetti e regolato nel file /etc/inittab che definisce appunto cosa faccia ciascuno dei runlevels. Appena dopo il suo avvio il kernel lancia il processo init che a sua volta andrà a leggere il contenuto del file inittab per analizzare il comportamento di ciascun runlevel.

Lo script /etc/rc.d/rc gestisce quali processi far partire a seconda del runlevel. Analizzando le singole directory /etc/rc.d/rc#.d (ove # sta per il numero associato ad un particolare runlevel).

In queste directory esistono una serie di collegamenti simbolici con nomi del tipo S12syslog o K65identd che puntano a degli script con nomi tipo:

/etc/rc.d/init.d/syslog

/etc/rc.d/init.d/identd

/etc/rc.d/rc

a seconda della directory corrispondente al runlevel da caricare, che fan partire tutti gli script che iniziano con S (S per start) e fa chiudere tutti quelli che iniziano con K (K per kill), eseguendoli nell’ordine indicato dal numero presente nei nomi dei suddetti collegamenti.

Gli script che di fatto permettono di gestire l’avvio o lo stop di un servizio sono quindi nella directory /etc/rc.d/init.d/ e possono essere utilizzati direttamente dall’utente per gestire i singoli processi.

Per esempio: /etc/rc.d/init.d/httpd start potrebbe avviare un server web e /etc/rc.d/init.d/stop arrestarlo.

Se abbiamo il file (un collegamento a ../init/httpd) /etc/rc.d/rc3.d/S85httpd, ad esempio, avremo un server web avviato quando la macchina è al runlevel 3 (spesso di default utilizzato per un server, che non ha necessità di un X windows system).

Se vogliamo evitare che venga avviato un server web, basterà rinominare il file, sostituendo la K alla S:

mv /etc/rc.d/rc3.d/S85httpd /etc/rc.d/rc3.d/K85httpd

Nel fare queste operazioni va sempre considerato il numero dopo la prima lettera, che determina l’ordine di esecuzione degli script. Questa è una logica comune a tutti gli Unix derivati da System V; possono cambiare i nomi dei runlevels, e in certi casi la funzione, ma non la logica di tale struttura d’avvio di un PC.

Fonte: Wikipedia

Conclusione:

Eccoci giunti alla fine del nostro cammino alla scoperta del run levels in Unix/Linux, adesso la palla passa a voi. Nel mentre noi restiamo a vostra disposizione e non solo aspettiamo le vostre impressioni nei commenti qui sotto. Noi per il momento vi fermiamo qui e vi diamo appuntamento alla prossima puntata dedicata alle prossime guide dedicate al mondo GNU/Linux, mondo Ubuntu, mondo Fedora, mondo Debian e non solo.

Libri utili:

  1. Amministrare Gnu/Linux – Quarta Edizione
  2. Linux Server per l’amministratore di rete. Per Ubuntu, CentOS e Fedora
  3. Linux. Guida pocket
  4. Imparare Linux in 5 giorni

Seguiteci anche su Facebook, Google Plus, Tumblr, Twitter e Telegram, per restare sempre in contatto con noi e con le nostre guide.



Cerca

Seguici

Live da Facebook
Live da Twitter
Seguici su Telegram
Canale InsiDevCode Telegram