Estoy empezando a sospechar que Ubuntu no le está diciendo a las aplicaciones en ejecución que se está cerrando para permitir que se cierren correctamente, sino que las obliga a hacerlo.
Si dejo Chrome abierto cuando lo apago, dice que no se cerró correctamente la última vez que lo abro después del arranque, LibreOffice no me pregunta si quiero guardar mi documento y estoy creando una aplicación que necesita ejecutar algún código en la salida, pero no está permitido hacerlo cuando la computadora está apagada.
Tal como lo he entendido, SIGTERM se envía primero a todos los procesos para permitirles salir limpiamente y, si no salen, SIGKILL se envía para obligarlos a abandonar. Parece que Ubuntu no está enviando SIGTERM en absoluto o no le da a las aplicaciones el tiempo suficiente antes de enviar SIGKILL.
¿Hay alguna manera de arreglar esto?
Estoy ejecutando Ubuntu 16.04 pero el problema también existía en 15.10. No puedo decir si estaba allí antes desde que comencé a usar Ubuntu cuando 15.10 era la versión más nueva.
Editar: uso Unity y apago mi computadora presionando el engranaje en la esquina superior derecha y seleccionando apagar, aunque el problema es el mismo si se ejecuta sudo halt
en la terminal.
Editar: estoy observando el mismo comportamiento cuando solo estoy cerrando sesión. Supongo que se supone que la señal se debe enviar al cerrar sesión y, por lo tanto, el problema surge al apagar y cerrar sesión.
Respuestas:
Desafortunadamente, no funciona de esta manera. Muchos de esos programas que realmente tienen un controlador de señal, no bloquean la señal para mostrar un diálogo de confirmación. El manejo de la señal a menudo es mínimo o falta.
Puede probarlo fácilmente sin tener que apagarlo. Simplemente envíe SIGTERM a su proceso de ejecución de Firefox o LibreOffice:
Normalmente, Firefox puede preguntarte si realmente quieres cerrarlo. Además, generalmente tarda un tiempo en cerrarse, especialmente cuando se ha estado ejecutando durante mucho tiempo y utilizando más de 1 GB de RAM; a menudo, el proceso tarda aproximadamente un minuto en finalizar después de que se haya cerrado su última ventana. Nada de esto sucede cuando envía SIGTERM, el proceso finaliza instantáneamente.
Sin embargo, algunos entornos de escritorio cierran todas las ventanas abiertas antes de apagarse. A diferencia de SIGTERM, cerrar una ventana mediante programación es como hacer clic en el botón X de esa ventana, o Alt+ F4. Esto también es lo que hace el script en la otra respuesta: usa wmctrl para cerrar todas las ventanas abiertas con gracia.
Cuando se cierra una ventana, el programa no tiene prisa y puede cerrar todo dentro de esa ventana, por ejemplo abrir pestañas, y también puede mostrar una ventana de diálogo si no hay trabajo guardado. Una vez que se han cerrado todas las ventanas abiertas de una aplicación, el proceso generalmente finaliza poco después.
Por lo tanto, depende de su entorno de escritorio (suponiendo que utilice su entorno de escritorio para apagarse y no
sudo poweroff
). Por ejemplo, KDE debería esperar a que se cierren las ventanas abiertas antes de apagarse, mientras que MATE no.En pocas palabras: cierre todas las ventanas abiertas manualmente antes de cerrar. O utilice un entorno de escritorio que espere a que se cierren todas las ventanas.
fuente
Por lo que vale, hace algún tiempo, encontré este procedimiento en el foro de Manjaro:
}
Puede llamarlo en un script propio para cerrar todas las aplicaciones abiertas antes de cerrar (o reiniciar).
El único problema es que se creó para Xfce, por lo que necesita los cambios que Unity DE impone. Una pequeña ayuda de alguien con más conocimientos vendría muy bien aquí para ayudar a resolver el problema de OP.
fuente
En realidad, una parte del script que cierra todas las ventanas y no depende de ningún DE en particular está disponible en Ask. Las respuestas 2 y 3 son particularmente útiles. Con solo unas pocas líneas más, y al crear un lanzador en el panel o en el escritorio, puede lograr el apagado elegante que funciona en el DE que está utilizando.
Cómo cerrar todas las ventanas abiertas con gracia
fuente