Estoy tratando de obtener un apagado / reinicio elegante en ArchLinux con GNOME Shell. Ahora, cuando solicito el apagado, se apaga inmediatamente sin dar tiempo a los programas abiertos para cerrar / guardar con gracia los archivos abiertos. Como resultado, cada vez que reinicio Chrome (por ejemplo), me dice que la sesión no se cerró correctamente, etc. Al leer en la web, aprendí que systemd al cerrar procesos, primero envía un mensaje SIGTERM
seguido por SIGKILL
si el proceso no se cierra dentro de un tiempo de espera determinado. Sin embargo, me doy cuenta de que en mi sistema SIGKILL
se envía inmediatamente después SIGTERM
y supongo que esta es la causa de la finalización de los programas no graciosos.
He encontrado alguna documentación que (si la leo correctamente) establece que el tiempo de espera antes del envío SIGKILL
se puede configurar por TimeoutStopSec=
opción. También el envío SIGKILL
también podría deshabilitarse por SendSIGKILL=
opción. Pero no puedo encontrar dónde configurar esas opciones ... ¿hay un archivo de configuraciones de apagado / reinicio de systemd donde pueda configurar esas opciones?
EDITAR:
Hice algunas pruebas y descubrí dos cosas interesantes:
- Si cierro manualmente Chrome de esta manera
killall -SIGTERM chrome
, no se quejará de que no se ha cerrado correctamente la próxima vez que lo inicie nuevamente. Si lo cierro asíkillall -SIGKILL chrome
, se quejará. Esto me dice que Chrome está manejando SIGTERM correctamente. - Mirando el resultado de mi procedimiento de apagado, systemd imprime
Sending SIGTERM...
inmediatamente seguido deSending SIGKILL...
Según el comentario a continuación, systemd está manejando sus procesos solamente. Entonces en mi caso GDM. Esto me dice que el problema podría ser:
- GDM no cierra sus procesos secundarios (por ejemplo, Chrome) correctamente (es decir, enviándoles SIGTERM)
- o systemd está enviando a GDM un mensaje SIGKILL a principios de no darle el tiempo para cerrar correctamente sus elementos secundarios.
¿Hay alguna manera de verificar / configurar cómo GDM realmente cierra a sus hijos?
systemd's
control, systemd
es decir pid 1
, pero Chrome se ejecuta fuera de su secuencia de comandos de envoltura en una subshell e invoca procesos secundarios después. Aún así, hará lo que sea necesario para eliminarlo zygotes
siempre que su sistema esté configurado correctamente. ¿Estás usando una de esas soluciones de espacio temporal para Chrome que encontrarás recomendadas en la wiki de Arch?
gnome-session
.