Pagina 1 di 1

differenze tra terminare o uccidere un processo

Inviato: lun mar 16, 2015 10:24 am
da crazy.cat
Che differenze ci sono tra il terminare un processo bloccato o ucciderlo dal monitor di sistema?
Grazie

(ieri avevo provato a ucciderne uno, non ricordo quale di preciso, e il sistema sembrava impazzito per alcuni secondi, si erano chiuse tutte le finestre per poi riaprisri dopo poco)
(Oggi provo a ucciderli e si limitano a chiudersi senza nessun problema o differenza visibile dal terminarli)

Re: differenze tra terminare o uccidere un processo

Inviato: lun mar 16, 2015 10:50 am
da Andy94
Non sono sicuramente la persona idonea per rispondere a questa domanda, quindi ti riporto una risposta di StackOverflow che magari qualcuno può approfondire.
The 'terminate' signal, SIGTERM, is a signal that can be intercepted in a program. Often processes which are meant to run in the background will catch this signal and start a shutdown process, resulting in a clean exit. The 'kill' signal, SIGKILL, cannot be intercepted. When this is sent to a process it will result in an abrupt termination of that program.

When you shutdown or reboot your computer for example, usually a SIGTERM is sent to the running processes first allowing them to exit in a clean way if they support it. Then, after a few seconds a SIGKILL is sent to the processes which are still running so that resources in use are forcibly released (e.g. files in use) and the shutdown sequence can continue (e.g. unmounting filesystems)
Maggiori informazioni: http://stackoverflow.com/questions/1920 ... terminated

Re: differenze tra terminare o uccidere un processo

Inviato: mar mar 17, 2015 9:20 am
da drilloman
Quando il sistema invia ad un processo il segnale sigterm è come se chiedesse educatamente a quel processo:
"per favore, potresti chiuderti?". Allora se il processo è altrettanto educato, dovrebbe (sottolineo dovrebbe) finire quello che ha da fare di importante (chiudere i file che ha aperto) e infine chiudersi.
Quando invece si invia il segnale sigkill, il sistema, senza troppi complimenti, toglie al processo l'utilizzo delle risorse. Naturalmente questo può avere delle ripercussioni su altri processi figli e sui file aperti, come dimostrato dall'instabilità che si nota subito dopo.
Per fare un'analogia con lo spegnimento di un pc, sigterm è come utilizzare la funzione arresta sistema, mentre sigkill è come togliere la corrente.

Re: differenze tra terminare o uccidere un processo

Inviato: mar mar 17, 2015 9:57 am
da crazy.cat
drilloman ha scritto:Quando il sistema invia ad un processo il segnale sigterm è come se chiedesse educatamente a quel processo:
"per favore, potresti chiuderti?". Allora se il processo è altrettanto educato, dovrebbe (sottolineo dovrebbe) finire quello che ha da fare di importante (chiudere i file che ha aperto) e infine chiudersi.
Quando invece si invia il segnale sigkill, il sistema, senza troppi complimenti, toglie al processo l'utilizzo delle risorse. Naturalmente questo può avere delle ripercussioni su altri processi figli e sui file aperti, come dimostrato dall'instabilità che si nota subito dopo.
Per fare un'analogia con lo spegnimento di un pc, sigterm è come utilizzare la funzione arresta sistema, mentre sigkill è come togliere la corrente.
Sospettavo qualcosa del genere, ma volevo averne la certezza prima di fare uscire l'articolo su come chiudere i processi bloccati in ubuntu.
Grazie

Re: differenze tra terminare o uccidere un processo

Inviato: gio mar 19, 2015 6:12 am
da Kgiulio
dipende da che comando dai di preciso... i segnali sono diversi, credo che il più "pesante" sia quello che termina il processo proprio a monte dal kernel e quindi viene terminato bruscamente senza "essere avvertito" in nessun modo e quindi senza avere la possibilità di chiudersi correttamente...

diversamente con metodi meno drastici ci sono varie possibilità, tra cui la più blanda risulta nella chiusura del processo praticamente come se cliccassi sulla X o come se uscissi dal programma regolarmente insomma

non ho idea di quali comandi usa quel monitor di sistema ma puoi guardare il manuale di kill tra le altre cose

Re: differenze tra terminare o uccidere un processo

Inviato: lun mar 23, 2015 5:35 pm
da ninja
Io uso il comando

Codice: Seleziona tutto

 killall {nomeprogramma/processo}
ha il vantaggio che termina anche i processi figli.

Il comando

Codice: Seleziona tutto

ps ax 
ti fornisce l'elenco di tutti i processi attivi e il loro pid che ti permette di utilizzare il comando kill per terminare/uccidere uno specifico processo.

Il comando b]kill[/b] permette di scegliere quale segnale inviare al processo, i valori si trovano nella guida:

Codice: Seleziona tutto

man kill 
P.S.: kill e killall funzionano solo sui processi avviati dall'utente a meno di non utilizzare i permessi di amministrazione anteponendo il comando sudo se non si è loggati come utente root.

Re: differenze tra terminare o uccidere un processo

Inviato: mar mar 24, 2015 11:28 am
da drilloman
ninja ha scritto:Il comando b]kill[/b] permette di scegliere quale segnale inviare al processo, i valori si trovano nella guida:

Codice: Seleziona tutto

man kill 
I principali sono 9 (kill) e 15 (terminate) che corrispondono a uccidi e termina di cui si parlava.
Una differenza tra kill e killall è che il primo accetta il pid (process identifier) come parametro mentre il secondo il nome del processo.