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 inestá 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 noestá establecido -
System Preferences > General > Ask to keep changes when closing documentsestá activado o desactivado -
System Preferences > General > Close windows when quitting an appestá activado o desactivado -
Recent Itemsse establece en cualquier valor (no tiene efecto) -
~/Library/Preferences/com.apple.loginwindow.plistcontieneTALLogoutSavesSateestablecido 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+.