Я пытаюсь получить корректное завершение работы / перезагрузку в ArchLinux с GNOME Shell. Теперь, когда я запрашиваю завершение работы, он немедленно выключается, не давая времени открытым программам корректно закрыть / сохранить открытые файлы. В результате, всякий раз, когда я перезагружаю Chrome (например), он говорит мне, что сессия была закрыта неправильно и т. Д. Читая в Интернете, я узнал, что systemd при закрытии процессов сначала отправляет, а SIGTERM
затем, SIGKILL
если процесс не закрывается в течение определенного времени ожидания. Однако я замечаю, что в моей системе SIGKILL
отправляется сразу после, SIGTERM
и я думаю, что это является причиной незавершенного завершения программ.
Я нашел некоторую документацию, в которой (если я правильно прочитал) говорится, что время ожидания перед отправкой SIGKILL
может быть установлено TimeoutStopSec=
опцией. Также отправка SIGKILL
также может быть отключена по SendSIGKILL=
желанию. Но я не могу найти, где настроить эти параметры ... Есть ли файл конфигурации systemd shutdown / reboot, где я могу установить эти параметры?
РЕДАКТИРОВАТЬ:
Я провел некоторое тестирование и обнаружил две интересные вещи:
- Если я вручную закрою Chrome, как это
killall -SIGTERM chrome
, он не будет жаловаться, что он не был закрыт правильно при следующем запуске. Если я вместо этого закроюkillall -SIGKILL chrome
его, он будет жаловаться. Это говорит мне о том, что Chrome правильно обрабатывает SIGTERM. - Глядя на вывод моей процедуры выключения, systemd печатает
Sending SIGTERM...
сразу послеSending SIGKILL...
Согласно комментарию ниже, systemd обрабатывает только свои процессы. Так что в моем случае GDM. Это говорит мне, что проблема может быть:
- либо GDM не закрывает свои дочерние процессы (например, Chrome) правильно (т. е. отправляя им SIGTERM)
- или systemd отправляет GDM сообщение SIGKILL на ранний срок, не давая ему времени для правильного закрытия дочерних элементов.
Есть ли способ проверить / настроить, как на самом деле GDM закрывает своих детей?
systemd's
контролем - systemd
есть pid 1
- но Chrome исполняет сценарий-оболочку в подоболочке и впоследствии вызывает дочерние процессы. Тем не менее, он будет делать то, что ему нужно, чтобы убить его, zygotes
пока ваша система правильно настроена. Используете ли вы одно из тех временных решений для Chrome, которое вы найдете рекомендуемым в вики Arch?
gnome-session
.