next up previous contents index
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 up previous contents index
Next: Console Virtuali: essere in Up: Multitasking Previous: Le basi
Eugenia Franzoni
1998-09-29