differenze tra terminare o uccidere un processo

Non importa se ti serve una mano per partire o se vuoi un consiglio avanzato: gli utenti "del Pinguino" hanno una risposta per ogni necessità.
Regole del forum
Rispondi
Avatar utente
crazy.cat
Amministratore
Amministratore
Messaggi: 8072
Iscritto il: mer mag 01, 2013 4:02 pm
Località: Noventa Padovana
Contatta:

differenze tra terminare o uccidere un processo

Messaggio da crazy.cat » lun mar 16, 2015 10:24 am

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)
Il mondo è pieno di idioti distribuiti strategicamente, affinché tu possa incontrarne almeno uno al giorno.

System
System
Bot ufficiale TurboLab.it
Bot
Messaggi:
Iscritto il: sab dic 31, 2016 6:19 pm
Contatta: Contatta

Re: differenze tra terminare o uccidere un processo

Messaggio da System » lun mar 16, 2015 10:24 am


Avatar utente
Andy94
Livello: Workstation (10/15)
Livello: Workstation (10/15)
Messaggi: 1364
Iscritto il: mer mag 01, 2013 1:35 pm
Località: Villorba (TV)

Re: differenze tra terminare o uccidere un processo

Messaggio da Andy94 » lun mar 16, 2015 10:50 am

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
Se la pazienza è una virtù, attendere è un'arte...
Stiamo tornando...

Avatar utente
drilloman
Livello: DVD-ROM (5/15)
Livello: DVD-ROM (5/15)
Messaggi: 103
Iscritto il: mar apr 22, 2014 3:05 pm

Re: differenze tra terminare o uccidere un processo

Messaggio da drilloman » mar mar 17, 2015 9:20 am

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.

Avatar utente
crazy.cat
Amministratore
Amministratore
Messaggi: 8072
Iscritto il: mer mag 01, 2013 4:02 pm
Località: Noventa Padovana
Contatta:

Re: differenze tra terminare o uccidere un processo

Messaggio da crazy.cat » mar mar 17, 2015 9:57 am

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
Il mondo è pieno di idioti distribuiti strategicamente, affinché tu possa incontrarne almeno uno al giorno.

Avatar utente
Kgiulio
Livello: DVD-ROM (5/15)
Livello: DVD-ROM (5/15)
Messaggi: 119
Iscritto il: mar set 17, 2013 3:14 pm
Località: Roma

Re: differenze tra terminare o uccidere un processo

Messaggio da Kgiulio » gio mar 19, 2015 6:12 am

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

Avatar utente
ninja
Livello: Chiavetta USB (8/15)
Livello: Chiavetta USB (8/15)
Messaggi: 487
Iscritto il: lun ago 26, 2013 8:52 pm

Re: differenze tra terminare o uccidere un processo

Messaggio da ninja » lun mar 23, 2015 5:35 pm

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.

Avatar utente
drilloman
Livello: DVD-ROM (5/15)
Livello: DVD-ROM (5/15)
Messaggi: 103
Iscritto il: mar apr 22, 2014 3:05 pm

Re: differenze tra terminare o uccidere un processo

Messaggio da drilloman » mar mar 24, 2015 11:28 am

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.

System
System
Bot ufficiale TurboLab.it
Bot
Messaggi:
Iscritto il: sab dic 31, 2016 6:19 pm
Contatta: Contatta

Re: Re: differenze tra terminare o uccidere un processo

Messaggio da System » mar mar 24, 2015 11:28 am


Rispondi
  • Argomenti simili
    Risposte
    Visite
    Ultimo messaggio