Fermare i processi senza interromperli


Vi è mai capitato di trovarvi nella necessità di usare il vostro Mac usufruendone appieno anche mentre il sistema è impegnato in una qualche operazione estremamente onerosa, come la conversione di un filmato in MPEG-2 o un rendering di Blender?
Spesso, a seconda della potenza del vostro computer, potreste ritrovarvi con un sistema estremamente poco reattivo, a volte lento al punto da non riuscire effettivamente a compiere ciò che si vuole compiere in modo ragionevolmente rapido.

Se non volete interrompere l'operazione pesante ma vi va bene metterla in pausa per continuarla in seguito i sistemi POSIX offrono, tra i vari segnali, qualcosa che fa al caso vostro: SIGSTOP.

SIGSTOP permette di mettere in pausa un processo a tempo indeterminato, liberando il processore da qualunque operazione ad esso collegata, permettendogli quindi di dedicarsi ad altro. La RAM utilizzata dal processo in questione non viene liberata automaticamente, ma il sistema la trasferisce automaticamente nei files di swap (quelli che noi utenti Mac amiamo chiamare "Memoria Virtuale") in caso di bisogno.

SIGCONT è l'opposto di SIGSTOP e fa ripartire il processo fermato.

Ci sono innumerevoli modi per invocare questi segnali, quello che utilizzo abitualmente si appoggia al comando killall (non c'è nulla di cui spaventarsi: killall è un comando dalle innumerevoli funzioni, solo alcune delle quali effettivamente "uccidono" dei processi).

Per prima è necessario individuare il nome reale del processo che si vuole fermare. Ciò può essere fatto tramite i comandi top o ps, tra gli altri, ma un metodo semplice da impiegare quando si è su OS X consiste nel guardare nella colonna "Nome Processo" dell'applicazione Monitoraggio Attività (ovvero /Applications/Utilities/Activity Monitor).

Una volta ottenuto il nome del processo basterà dare, da terminale (Applications/Utilities/Terminal) il comando
killall -STOP nomeprocesso

per sospendere l'esecuzione dello stesso.

Prevedibilmente, per riprenderla basterà dare il comando sottostante.
killall -CONT nomeprocesso

Come quasi sempre in ambiente POSIX gli spazi e alcuni caratteri possono non sembrare semplicissimi da gestire, se il nome del processo ne contiene (o contiene qualche carattere "strano") fareste quindi meglio a racchiuderlo tra virgolette, come nel seguente esempio.

killall -STOP "Toast Titanium"

Buona sospensione dei processi a tutti.;)



Articolo tratto da: Jack Overfull Home Page - http://www.jackoverfull.com/
URL di riferimento: http://www.jackoverfull.com/index.php?mod=read&id=1231949909