Tengo un sistema sin cabeza que se controla de forma remota que necesito apagar / reiniciar de manera automática (sin el uso de VNC o teclado / mouse local).
El uso de varios comandos a través de SSH o de mi daemon 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 las ventanas de cualquier aplicación en ejecución, aunque todas las siguientes son verdaderas:
- Cuando cerrar la sesión normalmente,
Reopen windows when logging back in
está sin marcar - Solo el elemento que quiero comenzar con el inicio de sesión aparece en
System Preferences > Users & Groups > Login Items
. -
defaults write -g ApplePersistence -bool no
está establecido -
System Preferences > General > Ask to keep changes when closing documents
está activado o desactivado -
System Preferences > General > Close windows when quitting an app
está activado o desactivado -
Recent Items
se establece en cualquier valor (no tiene efecto) -
~/Library/Preferences/com.apple.loginwindow.plist
contieneTALLogoutSavesSate
establecido en NO
En mi caso, no puedo usar AppleScript desde 10.7+ (?) advierte cuando otra máquina se comparte en red con AFP o SMBed, lo que provoca un error en el apagado. El comando shutdown
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 al iniciar sesión, y se muestra 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 alguna otra ventana estuviera abierta (Terminal o TextEdit con cambios no guardados) quiero que mi secuencia de comandos de apagado / reinicio obligue a cerrar cualquier aplicación abierta sin guardar y NO abrir en el siguiente inicio de sesión. También preferiría no realizar bucles en todos los procesos de usuario enviando cada uno un SIGTERM
o SIGKILL
manualmente antes de enviar el comando shutdown
.
Estoy totalmente 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, por lo que deseo un reinicio para llevar la máquina a un estado conocido, no al estado en que se encontraba in.
AFAICT ninguno de estos trabaje para apagar / reiniciar limpiamente la máquina en 3.7+.