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)
“Se tutti i documenti raccontavano la stessa favola, ecco che la menzogna diventava un fatto storico, quindi vera.”
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)
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.
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
“Se tutti i documenti raccontavano la stessa favola, ecco che la menzogna diventava un fatto storico, quindi vera.”
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
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:
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.
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.
Inserendo un messaggio, dichiari di aver letto e accettato il regolamento di partecipazione.
Nello specifico, sei consapevole che ti stai assumendo personalmente la totale responsabilità delle tue affermazioni, anche in sede civile e/o penale,
manlevando i gestori di questo sito da ogni coinvolgimento e/o pretesa di rivalsa.
Dichiari inoltre di essere consapevole che il messaggio sarà visibile pubblicamente, accetti di diffonderlo con licenza
CC BY-NC-SA 3.0 (con attribuzione a "TurboLab.it") e rinunci ad ogni forma di compensazione (economica o altro).
Rinunci inoltre esplicitamente a qualsiasi pretesa di cancellazione del messaggio.