Sto cercando di ottenere un arresto / riavvio grazioso in ArchLinux con GNOME Shell. Ora, quando chiedo l'arresto, si spegne immediatamente senza dare ai programmi aperti il tempo di chiudere / salvare i file aperti. Di conseguenza, ogni volta che riavvio Chrome (ad esempio) mi dice che la sessione non è stata chiusa correttamente ecc. Leggendo sul web ho appreso che systemd durante lo spegnimento dei processi, invia prima un SIGTERM
seguito SIGKILL
se il processo non si chiude entro un determinato timeout. Tuttavia noto che sul mio sistema SIGKILL
viene inviato immediatamente dopo SIGTERM
e suppongo che questa sia la causa di una chiusura non gradita dei programmi.
Ho trovato della documentazione che (se l'ho letta correttamente) afferma che il timeout prima dell'invio SIGKILL
può essere impostato TimeoutStopSec=
dall'opzione. Anche l'invio SIGKILL
potrebbe essere disabilitato per SendSIGKILL=
opzione. Ma non riesco a trovare dove configurare quelle opzioni ... esiste un file di configurazione di spegnimento / riavvio del sistema in cui posso impostare quelle opzioni?
MODIFICARE:
Ho fatto alcuni test e ho scoperto due cose interessanti:
- Se chiudo manualmente Chrome in questo modo
killall -SIGTERM chrome
, non mi lamenterò che non è stato chiuso correttamente la prossima volta che lo riavvio. Se invece lo chiudo in questo modokillall -SIGKILL chrome
, si lamenterà. Questo mi dice che Chrome sta gestendo correttamente SIGTERM. - Osservando l'output della mia procedura di spegnimento, systemd stampa
Sending SIGTERM...
immediatamente seguito daSending SIGKILL...
Secondo il commento qui sotto, systemd sta gestendo solo i suoi processi. Quindi nel mio caso GDM. Questo mi dice che il problema potrebbe essere:
- GDM non chiude correttamente i processi secondari (ad es. Chrome) (ovvero inviando loro SIGTERM)
- oppure systemd sta inviando a GDM un messaggio SIGKILL per non dargli il tempo di chiudere correttamente i propri figli.
C'è un modo per verificare / configurare come effettivamente GDM chiude i suoi figli?
systemd's
controllo - systemd
è pid 1
- ma Chrome viene eseguito dal suo script wrapper in una subshell e in seguito richiama i processi figlio. Tuttavia, farà ciò di cui ha bisogno per ucciderlo zygotes
fintanto che il sistema sarà configurato correttamente. Stai usando una di quelle soluzioni temp-space per Chrome che troverai consigliate nel wiki di Arch?
gnome-session
.