6.1 Processi e job
Un processo è un programma in esecuzione ed è identificato da un codice univoco chiamato PID (process identifier). Per vedere informazioni riguardo i processi, come lo stato, il tipo e il proprio PID, digitare:
ps
Un processo può essere eseguito in foreground, in background o essere sospeso. In generale la shell non ritorna la UNIX prompt finchè il processo corrente non termina la sua esecuzione. Alcuni processi richiedono molto tempo per essere eseguiti e di conseguenza tengono occupato il terminale che non può eseguire altri processi. Eseguendo in Background un processo duraturo, la UNIX prompt ritorna subito disponibile, e altri processi possono essere avviati mentre il processo originale continua ad essere eseguito.
Eseguire i processi in background
Per avviare un processo in Background, digita un & alla fine della linea di comando. Per esempio, il comando sleep attende un dato numero di secondi prima di continuare. Digitando
sleep 10
In questo modo attenderà 10 secondi prima di tornare il command prompt %. Finché il prompt command non è ritornato, non puoi fare nulla eccetto che aspettare.
Per eseguire sleep in background, digita
sleep 10 & [1] 6259
Il carattere & esegue il lavoro in background e ritorna il prompt immediatamente, consentendo l’esecuzione di altri processi.
La prima linea nell’esempio precedente è scritta dall’utente; la linea successiva, indicanter il job number ed il PID, è ritornata dalla macchina. Il job number (indicato tra parentesi quadre) e il PID è notificato all’utente quando un processo in background termina. Background è utile per i processi che impiegano molto tempo.
Mettere in background un processo attivo
Digitare:
sleep 1000
Puoi sospende un processo in foreground digitando ^Z, tenendo premuto [Ctrl] e il tasto [z]. dopo per metterlo in background, digita
bg
Nota: non mettere in background i programmi che richiedono l’interazione utente
6.2 Elenca i processi sospesi e in background
Quando un processo è in esecuzione, in background o sospeso, sarà presente in una lista, identificato dal proprio job number. Per esaminare questa lista
jobs
Un esempio di job list è:
- Suspended sleep 1000
- Running netscape
- Running matlab
Per riprendere (foreground) un processo precedentemente sospeso, digita
fg %numero_del_job
Per esempio, per riprendere sleep 1000, digiata
fg %1
Digitando fg senza nessun job number foregrounds, l’ultimo processo sospeso.
6.3 Uccidere i processi
Alcune volte è necessario uccidere un processo (per esempio, quando un programma esegue un loop infinito)
Per uccidere un processo in esecuzione in foreground, digita ^C (control c). Per esempio, esegui
sleep 100 ^C
Per uccidere un processo sospeso o in background, digita
kill %numero_del_job
Per esempio, esegui
sleep 100 & jobs
Se il suo job number è 4, digita
kill %4
Per verificare se il comando ha funzionato, esamina la job list ancora per vedere se il processo è stato rimosso.
Alternativamente, i pocessi possono essere uccisi trovando i loro process numbers (PIDs) ed usando kill PID_number
sleep 1000 & ps PID TT S TIME COMMAND 20077 pts/5 S 0:05 sleep 1000 21563 pts/5 T 0:00 firefox
Per uccidere il processo sleep 1000, digita
kill 20077
e poi digita ps ancora per vedere se è stato rimosso dalla lista. Se un processo non si fa uccidere, usa l’opzione -9, digita
kill -9 20077
Nota: non è possibile uccidere processi appartenti ad altri utenti!!!
Sommario
-
Comando Significato
comando & eseguire un processo in background ^C uccidere il job eseguito inforeground ^Z sospendere i job eseguito in foreground bg mettere in background il job sospeso jobs lista dei job correnti fg %1 mettere in foreground il job numero 1 kill %1 uccidere il job numero 1 ps listare i processi correnti kill 26152 uccidere il processo numero 26152