Tengo un sistema headless controlado remotamente que necesito apagar/reiniciar de forma automatizada (sin usar VNC o teclado/ratón local).
El uso de varios comandos a través de SSH o a través de mi demonio funciona como se espera y reinicia la máquina:
sudo shutdown -r now
o osascript -e 'tell application "System Events" to restart'
Sin embargo, estos comandos hacen que el sistema operativo vuelva a abrir Windows de cualquier aplicación que se esté ejecutando:
- Al cerrar la sesión normalmente
Reopen windows when logging back in
es No se ha comprobado - Sólo el elemento que quiero iniciar con el inicio de sesión aparece en
System Preferences > Users & Groups > Login Items
. defaults write -g ApplePersistence -bool no
se estableceSystem Preferences > General > Ask to keep changes when closing documents
es marcado o no marcadoSystem Preferences > General > Close windows when quitting an app
es marcado o no marcadoRecent Items
se establece en cualquier valor (no tiene efecto)~/Library/Preferences/com.apple.loginwindow.plist
contieneTALLogoutSavesSate
ajustado a NO
En mi caso no puedo usar el applescript ya que 10.7+(?) avisa cuando otra máquina está compartida en red con AFP o SMBed haciendo que el apagado falle. El shutdown
El comando fuerza el reinicio sin que aparezca un diálogo, que es exactamente lo que necesito. Sin embargo, cuando la máquina se inicia, quiero que se inicie exactamente una aplicación en el inicio de sesión, y aparece en los elementos de inicio de sesión.
La máquina está configurada para iniciar sesión automáticamente para que esta aplicación pueda ejecutarse pero si cualquier otro Windows estuviera abierto (Terminal o TextEdit con cambios no guardados) quiero que mi apagado/reinicio script fuerce el cierre de cualquier aplicación abierta sin guardar y NO abierto en el siguiente inicio de sesión. También preferiría no hacer un bucle for a través de todos los procesos de usuario enviando a cada uno un SIGTERM
o SIGKILL
manualmente antes de enviar el shutdown
comando.
Soy plenamente consciente de que esto puede causar la pérdida de datos (si el usuario no guardó su documento) pero esto es típicamente una máquina desatendida que quiero un reinicio para llevar la máquina a un estado conocido, no el estado en que se dejó.
AFAICT ninguno de estos trabajo para apagar/reiniciar limpiamente la máquina en 3.7+.