GLM - 5/3/2021 - 10:27
Classifica dei relatori GLM 2014 (per numero di lezioni svolte)
- [9] Samuele Cacchiarelli
- [6] Andrea Bianchini
- [6] Gianluca Gabrielli
- [1] Matteo Ciccioli
- [1] Fabio Pagnotta
- [1] Alessandro Zampa
- [1] Emanuele
- [1] Roberto Marozzi
- [1] Giampiero Rubini
Vuoi diventare relatore GLM? presenta anche tu una lezione su un argomento che più ti piace relativo a Linux o al mondo dell'OpenSource
Archivio news
Che cosa sono i Run Level e a Cosa servono
Run Level
Linux utilizza lo stesso metodo di inizializzazione del sistema Unix System V; per inizializzazione del sitema
si intende quella serie di procedure, che attivando dei servizi, porta il sistema ad un determinato livello di esecuzione
(Run Level appunto )a seconda delle esigenze i Run Level sono distinti da un numero che va da 0 a 6.
A cosa corrisponde ogni livello ?
0 (zero) | è dedicato alle operazioni di spegnimento |
6 | al riavvio del sistema |
1 o S(s) | all'avvio in modalità mono-utente , per la manutensione del sistema |
3 | all'avvio standard multi-utente |
5 | all'avvio in modalità grafica tramite X (multi-utente) |
2 e 4 | vengono di solito lasciati per eventuali settaggi particolari che l'amministratore ritiene utile usare in determinate circostanze (per motivi di sicurezza o per avere un sistema più performante ...) |
Detto questo vediamo chi e come si occupa dell'avvio di tutti i processi che caratterizzano un run level :
il responsabile di questo delicato compito è il processo INIT (che avrete notato, viene lanciato per ultimo al termine dell'avvio del kernel);
init usa gli script del file inittab per creare i processi, per ogni runlevelin inittab ci sarà una riga del tipo :
id:run_level:azione:processo
dove:
id | 2 caratteri che identificano la riga in questione |
run_level | e' ovviamente il numero di run level |
azione | indica l'azione da eseguire (leggere man per le informazioni sulle numerose azioni) |
processo | indica il processo da eseguire |
ecco un esempio della parte che ci interessa dell'inittab:
(ovviamente il file è più complesso )
id:3:initdefault:
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
11:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
15:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
la prima riga utile all'avvio dice a init che il run level 3 è quello di default subito dopo c'è la parte di inizializzazione
del sistema sysinit che verrà eseguito al boot del sistema;
di seguito c'è il blocco dedicato ad ogni run level dallo 0 al 6 (secondo campo) il primo campo è un semplice "indice di riga"
nel terzo campo notiamo per tutti l'azione wait ( Il processo sarà avviato quando si entra nel runlevel specificato e init attenderà
che venga messo in esecuzione prima di avviarne altri), nell'ultimo campo è indicato il percorso completo del processo da eseguire per ciascuno dei run level
per ricapitolare quindi, all'avvio, init apprende che dovrà avviare il sistema con run level 3 , avvia sysinit e va ad avviare uno dopo
l'altro i processi contenuti in /etc/rc.d/rc 3
ecco alcuni utili comandi:
runlevel | restitusce nell'ordine il valore del precedente e dell'attuale runlevel |
telinit NUM | dove NUM è un numero compreso tra 0 e 6, spinge il sistema a passare dall'attule run level a quello indicato |
init NUM | come per telinit |
(si fa notare che "telinit" è un link al comando "init" )
vediamo piu' approfonditamente qual'è la politica di gestione dei singoli servizi; tutti i servizi hanno uno script nella
directory init.d/ (di solito nel percorso /etc/rc.d/init.d/), come al solito non è detto che il nome dello script corrisponda esattamente
col nome del servizio (es: smb per samba) bisogna quindi prestare attenzione ai nomi; lo script si occupa essenzialmente di
interpretare il comando di avvio e di arresto del servizio , facendo anche dei controlli per non avviare più di una volta un
servizio già attivo.
esempio di una dir init.d/ :
[root@localhost init.d]# ls -l
totale 236
-rwx------ 1 root root 6610 mar 15 2002 alsa*
-rwx------ 1 root root 1195 feb 23 2002 anacron*
-rwx------ 1 root root 1462 feb 23 2002 apmd*
-rwx------ 1 root root 1194 feb 23 2002 atd*
-rwx------ 1 root root 1332 feb 22 2002 crond*
-rwx------ 1 root root 7238 feb 21 2002 cups*
-rwx------ 1 root root 4379 set 17 2002 firewall*
-rwx------ 1 root root 15130 mar 15 2002 functions*
-rwx------ 1 root root 1487 feb 21 2002 gpm*
-rwx------ 1 root root 6264 mar 15 2002 halt*
-rwx------ 1 root root 1088 feb 25 2002 harddrake*
-rwx------ 1 root root 5356 mar 13 2002 httpd*
-rwx------ 1 root root 1043 set 12 18:33 internet*
Comandi per la gestione manuale dei servizi
è utile conoscere cosa digitare nel caso si presenti la necessità di dover attivare o arrestare un servizio (o più di uno) durante una sessione :
path_to_init.d/nome_servizio start (avvia il sevizio)
path_to_init.d/nome_servizio stop (ferma il servizio)
es: (per avviare Samba)
[..]#/etc/rc.d/init.d/smb start
Avvio servizi SMB: stop [ OK ]
Avvio servizi NMB: stop [ OK ]
(nell'es. qui sopra è mostrato l'output dell'avvio positivo di samba, la colonna degli OK viene restituita dai sistemi
tipo Red Hat).
Generalmente gli script prevedono oltre alle azioni basilari (start, stop) anche
- status: per visualizzarne lo stato e
- restart : per il riavvio
N.B. per evitare di scrivere il percorso alla dir. init.d/ si puo' usare con le stesse modalità il comando service
service nome_servizio azione
es: (per arrestare Samba)
[..]#service smb stop
Chiusura dei servizi SMB: [ OK ]
Arresto dei servizi NMB: [ OK ]
(è ovvio che per gestire i servizi sono necessari i diritti di root).
Vai alla pagina 2/2