Blog

Ads:

Multitasking su Linux

Visto che Linux, o meglio, la console di Linux al contrario del DOS è multi-tasking, ovvero è possibile gestire più processi contemporaneamente, vediamo quindi come gestire il tutto con l'ausilio dei comandi predisposti.

Per prima cosa proviamo ad avviare un processo che bloccherà la console come ad esempio updatedb.

sudo updatedb


Questo comando renderà la console bloccata, quindi premiamo CTRL+Z e vedremo comparire questo messaggio:

[1]+ Stopped sudo updatedb

Questo messaggio ci indica che è stato assegnato il numero 1 al processo messo in attesa, quindi bloccato ma non terminato. Infatti è possibile usare la console.

Proviamo adesso a metterlo in background, ovvero sullo sfondo: il processo continuerà a lavorare ma non bloccherà la console.

Il comando da usare è il seguente:

bg %

qui % sarà sostituito dal numero del processo, in questo caso 1.

Per rimetterlo in primo piano sarà necessario usare:

fg %



Questa tecnica è valida anche per più processi contemporanei, e per fare ordine Linux ci offre un comodo comando: jobs.

Vediamo il suo funzionamento:

$ jobs
[1]- Running sudo updatedb &
[2]+ Running gedit &

Il numero tra parentesi quadre ci indica il numero (job number) assegnato al processo, mentre accanto c'è la scritta "Running" la quale ci indica lo stato del processo (in esecuzione), se avessimo dato questo comando quando abbiamo stoppato updatedb ci sarebbe stato scritto "Stopped" (in attesa).

Con jobs -l dà la possibilità di avere anche il PID (Process IDentificator) e la directory di lavoro.

C'è anche la possibilità di avviare un processo direttamente in background, basterà scrivere il nome del programma seguito da uno spazio e dal simbolo "&".

Provate ad avviare una programma grafico con quel simbolo:

$ gedit &
[1] 5968

Verrà eseguito gedit e verrà restituita la console.

Al solito, il numero tra parentesi quadre indica il numero assegnato al processo anche detto Job number, mentre il numero di seguito è il PID, identificatore di processo e questo è visibile a livello di macchina.

L'ultimo comando analizzato è kill. Kill serve per "ammazzare" i processi, ovvero il corrispettivo di CTRL+C. Per terminare un processo serve sapere il job numeber o il PID, vediamo come fare una strage di processi...

kill %1

Terminerà il processo eseguito nel terminale corrente con job numer 1

kill 5968

Terminerà il processo con PID uguale a 5968.

Non entro nel merito dei vari segnali ma vi basti che kill invia per default il segnale TERM, per una altre informazioni vi rimando al manuale di kill (man kill)

Pubblicato il 8 Febbraio 2008 alle 18:32 da DnaX e letto 321 volte.

Link di trackback

Abbonati al feed RSS. Se non sai cos'è guarda qui.

Abbonati alla newsletter per ricevere via email ogni nuovo articolo pubblicato. L'indirizzo verrà gestito da FeedBurner.

Dai il tuo parere: Commenta questo articolo!
2 commenti su Multitasking su Linux
  1. Churli dice:

    Davvero ottimo, questo ancora non lo sapevo ;)

    Ma i "+" e "-" dopo le parentesi quadre stanno a significare che il processo è in back/foreground ?

    Domenica, 10 Febbraio 2008 alle 15:23
  2. DnaX dice:

    No, il "+" e il "-" stanno a significare l’ordine di esecuzione, il processo con il "+" sarà l’ultimo ad essere stato eseguito, mentre quello con "-" il penultimo.

    Del resto come faresti a dare il comando jobs se un processo è in foreground? :D

    Domenica, 10 Febbraio 2008 alle 17:07
Lascia un commento


Creative Commons License 2004-2009 by DnaX Web Site
Per informazioni sulla licenza leggere le Note legali

Lo script ha impiegato: 0.03411s ed eseguito 41 query SQL.

Torna su