Cerca nel sito:
ricerca
avanzata

Frasi Celebri...

La vita di ogni uomo ? una via verso se stesso, il tentativo di una via, l'accenno di un sentiero.

Hermann Hesse 

Sondaggio:

Quale sistema operativo preferite?

Linux
Windows
DOS
MacOs
UNIX

visualizza risultati


 

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 capire 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 (principalmente sono programmi di sistema che non comunicano con l'utente attraverso la tastiera). 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).

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 (in genere è più semplice eliminare il processo tramite il numero di job invece che con il PID).

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.

 

successivo
–«  INDICE  »–

 

 

 

 
Powered by paper&pencil (carta&matita ) - Copyright © 2001-2022 Cataldo Sasso