Iprocessi - Manuali.net

Transcript

Iprocessi - Manuali.net
Lezione n. 25
Ubuntu GNU/Linux Base
I processi
Introduzione
Nelle sezioni riguardante il software, abbiamo visto che esistono alcune
applicazioni, in grado di visualizzare i processi attivi nel sistema e di gestirli in
qualche modo, ma il modo di gestione migliore dei processi è indubbiamente
quello di utilizzare la shell insieme a particolari programmi, creati
appositamente per questo scopo.
Processo, può essere inteso come un programma o parte di
esso.
I processi sotto GNU/Linux
Ogni volta che lanciamo un comando, questo, può generare uno o più processi;
ogni processo ha un proprio PID (process ID), cioè un valore numerico che lo
identifica univocamente, inoltre ognuno di questi processi, tranne init (il primo
processo avviato nel sistema), è generato da un'altro processo, di cui si
definisce il PPID (Parent PID). Entrano, quindi, a far parte di questi processi,
due nuovi concetti, il concetto di processo padre (parent) ed il concetto di
processo figlio (child); ognuno di essi ha delle caratteristiche particolari che
sono: il codice eseguibile, la posizione di esecuzione, i dati che gestisce, i file
aperti, l'ambiente di esecuzione e le credenziali.
Inoltre, bisogna dire che ogni processo può assumere diversi stati:
R - running, il processo è in esecuzione;
S - sleeping, il processo è in attesa;
Z - zombie, il processo è morto ed aspetta che il padre chieda un codice
d'uscita.
Ultima caratteristica di ogni processo è la priorità, un valore numerico che va
da -20
Vincenzo Mastrobattista - Manuali.Net © 2008 Tutti i diritti riservati
1
Ubuntu GNU/Linux Base
Lezione n. 25
(priorità massima) a 19 (priorità minima).
Un processo può generare una copia di se stesso (fork), cha ha PID diverso e
PPID uguale al proprio PID.
Ora che sappiamo bene o male, la maggior parte delle caratteristiche inerenti
un processo, possiamo passare alla loro gestione.
I programmi comunemente utilizzati per questo scopo sono i seguenti:
ps, questo programma, riporta lo stato dei processi, grazie al quale possiamo
determinare, quali sono i processi in running e quali no, controllare la
percentuale di memoria e CPU utilizzata da ogni processo, visualizzare il PID e
molto altro (ovviamente nella pagina di man sono contenute tutte le opzioni ed
una descrizione più dettagliata).
Vediamo alcuni esempi di utilizzo:
ps -aux (l’opzione “a” include nell’output i processi di tutti gli utenti, “u”,
mostra la colonna USER con il nome utente, proprietario di quel determinato
processo e “x”, mostra quei determinati processi che non si appoggiano ad un
terminale specifico,
come quei programmi che apriamo da interfaccia
grafica)
(ovviamente l’output del comando, presente nella figura qui sopra, non è
completo, per problemi di spazio)
ps -raux (l’opzione “r”, aggiunta a quelle precedenti, fa sì che l’output
diminuisca drasticamente, questo perché tra tutti i processi, stampa solamente
quelli nello stato di running)
Vincenzo Mastrobattista - Manuali.Net © 2008 Tutti i diritti riservati
2
Ubuntu GNU/Linux Base
Lezione n. 25
pstree, mostra l’albero dei processi, in modo tale, da poterci rendere conto di
quanti processi figli genera un determinato processo ad esempio.
top, fornisce in tempo reale istantanee dell’attività del processore; mostrando
una lista dei processi che stanno utilizzando di più la CPU è inoltre in grado di
ordinarli in base all’uso di CPU, all’uso di memoria e al tempo di esecuzione.
L’ordine con cui i processi vengono elencati ed i parametri di visualizzazione
possono essere modificati, quando top è già in esecuzione:
N - Ordina secondo PID
A - Ordina secondo età (per prima i più recenti)
P - Ordina secondo utilizzo CPU
Vincenzo Mastrobattista - Manuali.Net © 2008 Tutti i diritti riservati
3
Ubuntu GNU/Linux Base
Lezione n. 25
M - Ordina secondo memoria utilizzata
vmstat, riporta informazioni sui processi, sulla memoria, sulla paginazione,
sui block IO, i trap e l’attività della CPU.
La prima volta mostra le medie dall’ultimo reboot. Le volte successive da
informazioni su un periodo di campionamento di lunghezza delay ( delay è il
ritardo in secondi tra gli aggiornamenti).
es:
vmstat 3 5 (mandato in esecuzione in questo modo, genererà i rapporti
ogni 3
secondi per 5 volte e poi si chiuderà)
(Output di vmstat)
Vincenzo Mastrobattista - Manuali.Net © 2008 Tutti i diritti riservati
4
Ubuntu GNU/Linux Base
Lezione n. 25
kill [- signal] [-opzioni] pid, questo comando è in grado di inviare un segnale
ad un determinato processo, specificato nella lista dei parametri tramite pid. Se
non è specificato
nessun segnale, viene inviato il TERM. Il segnale TERM, non è sicuro, perché è
in grado di uccidere solamente i processi che sono in grado di catturare questo
tipo di segnale; per essere certi che un processo termini, bisognerebbe
utilizzare il segnale KILL cioè il numero 9 nel seguente modo:
kill -9 pid
inoltre per visualizzare tutte le tipologie di segnali da poter inviare ad un
determinato processo, si possiamo digitare il seguente comando:
kill -l
Ctrl+z o Ctrl+c, rispettivamente se premiamo queste combinazioni di tasti da
shell, la prima bloccherà temporaneamente il processo che stiamo eseguendo
(per sbloccarlo bisogna utilizzare fg o bg), la seconda cercherà di terminare il
processo che stiamo eseguendo.
nice <priorità> comando, avvia un programma con priorità modificata, se
non passiamo alcun parametro, viene solamente visualizzata la priorità di nice,
altrimenti passando solamente il comando, la sua priorità verrà incrementata di
dieci, o ancora se passiamo una priorità compresa tra -20 e 19, il comando
assumerà quella determinata priorità; con una piccola accortezza, le priorità
negative, essendo quelle più alte, può impostarle solamente il super utente.
Vincenzo Mastrobattista - Manuali.Net © 2008 Tutti i diritti riservati
5