GLM - 17/1/2018 - 1:29


Classifica dei relatori GLM 2014 (per numero di lezioni svolte)

  1. [9] Samuele Cacchiarelli
  2. [6] Andrea Bianchini
  3. [6] Gianluca Gabrielli
  4. [1] Matteo Ciccioli
  5. [1] Fabio Pagnotta
  6. [1] Alessandro Zampa
  7. [1] Emanuele
  8. [1] Roberto Marozzi
  9. [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

server glm
Il nostro Server

bella gnocca freebsd
FreeBSD It's Here!

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

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