Próbuję uzyskać płynne zamknięcie / ponowne uruchomienie w ArchLinux z GNOME Shell. Teraz, gdy proszę o zamknięcie, natychmiast się wyłącza, nie dając programom czasu na pełne wdzięczne zamykanie / zapisywanie otwartych plików. W rezultacie za każdym razem, gdy ponownie uruchamiam Chrome (na przykład), mówi mi, że sesja nie została poprawnie zamknięta itp. Czytając w Internecie dowiedziałem się, że system został zamknięty podczas zamykania procesów, najpierw wysyła znak „ SIGTERMa”, SIGKILLjeśli proces się nie zamyka z określonym limitem czasu. Zauważam jednak, że w moim systemie SIGKILLjest wysyłany natychmiast po nim SIGTERMi myślę, że jest to przyczyną nieoczekiwanego zakończenia programów.
Znalazłem dokumentację, która (jeśli poprawnie ją odczytam) określa ten limit czasu przed wysłaniemSIGKILL można ustawić TimeoutStopSec=opcjonalnie. Również wysyłanie SIGKILLmoże być wyłączone przez SendSIGKILL=opcję. Ale nie mogę znaleźć, gdzie skonfigurować te opcje ... czy istnieje plik konfiguracji systemu zamykania / ponownego uruchamiania systemu, w którym mogę ustawić te opcje?
EDYTOWAĆ:
Zrobiłem test i odkryłem dwie interesujące rzeczy:
- Jeśli ręcznie zamknę Chrome w ten sposób
killall -SIGTERM chrome, nie będzie narzekać, że nie został poprawnie zamknięty przy następnym uruchomieniu. Jeśli zamiast tego zamknę to w ten sposóbkillall -SIGKILL chrome, będzie narzekać. To mówi mi, że chrome poprawnie obsługuje SIGTERM. - Patrząc na wynik mojej procedury zamykania, wydruk systemowy
Sending SIGTERM...natychmiast po nimSending SIGKILL...
Zgodnie z komentarzem poniżej systemd obsługuje tylko swoje procesy. Więc w moim przypadku GDM. To mówi mi, że problemem może być:
- albo GDM nie zamyka poprawnie swoich procesów potomnych (np. Chrome) (tj. wysyłając do nich SIGTERM)
- lub systemd wysyła do GDM komunikat SIGKILL na wczesny czas, nie dając mu czasu na prawidłowe zamknięcie swoich elementów potomnych.
Czy istnieje sposób sprawdzenia / skonfigurowania, w jaki sposób GDM zamyka swoje dzieci?
systemd'skontrolą - systemdjest pid 1- ale Chrome wykonuje skrypt otoki w podpowłoce i wywołuje procesy potomne. Mimo to zrobi wszystko, co konieczne, aby go zabić zygotes, o ile system jest odpowiednio skonfigurowany. Czy używasz jednego z tych tymczasowych rozwiązań dla Chrome, które znajdziesz w wiki Arch?
gnome-session.