Next: Console Virtuali: essere in
Up: Multitasking
Previous: Le basi
Cosa sta succedendo veramente?
È importante capire che il controllo dei job viene fatto dalla shell. Non
esiste nel sistema un programma fg; piuttosto fg,
bg, &, jobs e kill sono tutti comandi interni alla
shell (qualche volta kill è un programma indipendente, ma
la shell bash usata da Linux ce l'ha interno). Questo è un
modo logico di procedere: siccome ogni utente ha il proprio spazio per il
controllo dei job, e ogni utente ha già la sua shell, è più
semplice far
controllare i job dell'utente alla shell. Quindi, ogni numero di
job di un
utente si riferisce soltanto a quell'utente: il mio job numero [1] e il
tuo job numero [1] sono due processi totalmente differenti. In
effetti,
se siete loggati più di una volta, ogni vostra shell avrà dati
diversi
per controllare i job, così ogni utente può avere due job diversi
con lo stesso numero in due shell diverse.
Il modo per riferirsi in modo sicuro ad un processo è mediante il numero di
identificazione di processo, o Process ID (PID).
Questo numero viene assegnato dal sistema--ogni processo
ha un PID univoco. Due utenti diversi possono riferirsi ad un processo
mediante il suo PID e sapere che si stanno riferendo allo stesso
processo (assumendo che siano loggati nella stessa macchina!).
Diamo un'occhiata ad un altro comando per capite cosa sono i PID. Il
comando ps elenca tutti i processi in esecuzione, compresa la vostra
shell. Provate. Ha anche alcune opzioni: le più importanti
(secondo
molti) sono a, u e x. L'opzione a elencherà i
processi di tutti gli utenti, non solo i vostri. L'opzione x mostrerà
i processi che non hanno un terminale
associato.6.6 Infine, l'opzione u dà ulteriori informazioni
sui processi, che spesso sono utili.
Per avere davvero un'idea di cosa sta facendo il sistema, mettete insieme
tutte le opzioni: ps -aux. Potete vedere i processi che usano più
memoria guardando la colonna %MEM, e più tempo di CPU sulla colonna
%CPU (la colonna TIME elenca il tempo totale di CPU
usato).tempo di CPU
Un'altra nota veloce sui PID. kill, oltre ad accettare le opzioni
nella forma %numero-job, accetta direttamente anche i PID.
Così, mettete
yes > /dev/null in background, eseguite ps e cercate yes.
Quindi digitate kill PID.6.7
Se iniziate a programmare in C nel vostro sistema Linux, imparerete che il
controllo dei job della shell è soltanto una versione interattiva delle
chiamate fork e execl. È troppo complesso da vedere
qui,
ma potrebbe essere utile ricordarlo più avanti quando dovrete
programmare e
vorrete eseguire processi multipli di un singolo programma.
Next: Console Virtuali: essere in
Up: Multitasking
Previous: Le basi
Eugenia Franzoni
1998-09-29