Ho un sistema headless controllato a distanza che ho bisogno di spegnere / riavviare in modo automatico (senza l'utilizzo di VNC o tastiera / mouse locale).
L'utilizzo di vari comandi via SSH o tramite il mio daemon funziona come previsto e riavvia la macchina:
sudo shutdown -r now
o osascript -e 'tell application "System Events" to restart'
Tuttavia, questi comandi fanno sì che il sistema operativo riapra finestre di tutte le applicazioni in esecuzione anche se le seguenti sono tutte vere:
- Quando esci normalmente,
Reopen windows when logging back in
è deselezionata - Solo l'elemento che desidero iniziare con l'accesso è elencato in
System Preferences > Users & Groups > Login Items
. -
defaults write -g ApplePersistence -bool no
è impostato -
System Preferences > General > Ask to keep changes when closing documents
è selezionato o deselezionato -
System Preferences > General > Close windows when quitting an app
è selezionato o deselezionato -
Recent Items
è impostato su qualsiasi valore (non ha alcun effetto) -
~/Library/Preferences/com.apple.loginwindow.plist
contieneTALLogoutSavesSate
impostato su NO
Nel mio caso non posso effettivamente usare il applescript dal 10.7+ (?) avverte quando un'altra macchina è condivisa in rete con AFP o SMBed, causando il fallimento dell'arresto. Il comando shutdown
forza il riavvio senza aprire una finestra di dialogo che è esattamente ciò di cui ho bisogno. Tuttavia all'avvio della macchina voglio esattamente una applicazione per iniziare al login, ed è elencata negli elementi di login.
La macchina è impostata per accedere automaticamente in modo che questa applicazione possa essere eseguita, ma se sono aperte altre finestre (Terminal o TextEdit con modifiche non salvate) il mio script di spegnimento / riavvio forzerà la chiusura di qualsiasi applicazione aperta senza salvare e NOT aperto al prossimo accesso. Preferisco anche non eseguire il ciclo su tutti i processi utente inviando ognuno a SIGTERM
o SIGKILL
manualmente prima di inviare il comando shutdown
.
Sono pienamente consapevole che ciò potrebbe causare la perdita di dati (se l'utente non ha salvato il proprio documento) ma questa è tipicamente una macchina automatica che voglio che un riavvio porti la macchina a uno stato noto, non lo stato in cui è stata lasciata a.
AFAICT nessuno di questi lavoro per spegnere / riavviare correttamente la macchina in 3.7 +.