Cosa sta succedendo veramente?
Keywords: guide

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