Accelerare il processo di spegnimento in OS X

Quando spegni il tuo Mac, OS X tenterà di uscire in modo pulito dai programmi e dai servizi in background; tuttavia, in alcune circostanze ciò può richiedere un tempo eccezionalmente lungo, in modo che il sistema resti in attesa di minuti prima di spegnersi definitivamente. A volte questo è il sistema in attesa di un'interazione come il salvataggio di un documento, ma altre volte è perché i servizi in background hanno smesso di rispondere e il sistema è in attesa di un tempo prestabilito prima di forzarli a uscire.

Generalmente OS X dovrebbe impiegare solo pochi secondi per spegnersi, quindi se il tuo sistema impiega molto tempo, questo suggerisce un problema che deve essere risolto. A volte questo può essere semplicemente un dispositivo periferico problematico o due, o potrebbe essere causato da una configurazione errata del sistema. In questi casi, è necessario provare alcune procedure di risoluzione dei problemi di base per identificare e risolvere il problema.

Tuttavia, se si verificano arresti prolungati regolarmente ma a intervalli più casuali, potrebbero verificarsi situazioni situazionali e potrebbero essere causati dal sistema in attesa di alcuni processi in background per uscire.

Per impostazione predefinita, il sistema attende che i processi in background finiscano da soli, ma in caso contrario invierà tali processi un segnale di kill dopo 20 secondi e, se questi processi scadono a intervalli diversi, questo può estendere un arresto a un numero di minuti.

Pertanto, per alcuni processi in background che tendono a bloccarsi più di altri, la semplice modifica di questa impostazione predefinita di 20 secondi a un valore inferiore causerà l'uscita anticipata di questi processi da parte del sistema. Mentre forzare i processi a uscire non è la migliore pratica, il sistema si sta già attrezzando per farlo durante l'arresto. Ancora una volta, OS X consente solo al processo di uscire da una finestra di 20 secondi, e quindi il sistema ucciderà il processo con forza.

I servizi in background che sembrano essere colpevoli comuni in questi timeout sono quelli che gestiscono la comunicazione tra processi, la gestione dell'autenticazione e l'attività delle risorse su disco e rete. In OS X questi includono quanto segue:

  • AppleEvents - Ciò consente ai processi di comunicare e di comandarsi a vicenda (ed è la base per AppleScript). È possibile che scada un'interruzione nella comunicazione tra processi (ad esempio, se un processo è costretto a uscire quando gli eventi vengono gestiti).
  • securityd : gestisce l'accesso ai portachiavi e ad altre autorizzazioni di sicurezza e potrebbe scadere se si attende l'interazione dell'utente per alcune richieste di autenticazione.
  • mDNSResponder - Gestisce le azioni DNS multicast, inclusa la scoperta automatica di server e servizi di rete. Questo potrebbe scadere dai problemi con la configurazione di rete locale.
  • diskarbitrationd : l'arbitro del disco controlla il montaggio e l'accessibilità dei file system locali e potrebbe perdere tempo a causa di un errore nelle unità in uso o se un'unità passa in modalità non in linea o in modalità di sospensione e richiede un po 'di tempo per attivarsi.
  • Autenticazione ID Apple : gestisce la verifica del tuo ID Apple per vari servizi; potrebbe scadere dal cattivo accesso alla rete o dalla mancanza di risposta da parte dei server Apple.

La gestione dei timeout di questi processi viene eseguita dal processo launcher di sistema launchd, che contiene il timeout predefinito di 20 secondi per i processi. Istruendo il programma di avvio per abbreviare questo periodo anche della metà, è possibile accelerare significativamente gli arresti in ritardo a causa di questi processi.

Per modificare i timeout, è necessario modificare i file del daemon di avvio che il sistema utilizza per questi servizi, quindi prima assicurati di avere un backup del sistema, quindi esegui i seguenti comandi, che puoi copiare e incollare (ogni comando è due linee) nell'utilità Terminal di OS X (nella cartella Applicazioni> Utility):

sudo defaults scrivi / Sistema / Libreria / LaunchDaemons / c \

om.apple.coreservices.appleevents ExitTimeOut -int 5

sudo defaults scrivi / Sistema / Libreria / LaunchDaemons / c \

om.apple.securityd ExitTimeOut -int 5

sudo defaults scrivi / Sistema / Libreria / LaunchDaemons / c \

om.apple.mDNSResponder ExitTimeOut -int 5

sudo defaults scrivi / Sistema / Libreria / LaunchDaemons / c \

om.apple.diskarbitrationd ExitTimeOut -int 5

sudo default registra / Sistema / Libreria / LaunchAgents / com. \

apple.coreservices.appleid.authentication ExitTimeOut -int 5

In questi comandi come scritto sopra, il valore di timeout è impostato su "5", il che significa che il sistema attenderà 5 secondi prima di uccidere un processo durante l'arresto, ma è possibile cambiarlo su qualsiasi valore intero maggiore di zero (un valore di zero disabilita il valore timeout, quindi aspetterebbe indefinitamente). Nota che questi sono comandi "sudo", il che significa che quando esegui il primo dovrai fornire la password di amministratore (che non verrà mostrata nel Terminale quando richiesto), ma non sarà necessario fornire la password per i comandi successivi .

Incolla entrambe le righe di ogni comando indicato sopra nel Terminale, modificando il valore di 5 in un altro numero, se lo desideri (puoi eseguire nuovamente i comandi in qualsiasi momento con valori diversi). Al termine, riavvia il computer, quindi verifica se questo migliora i tempi di spegnimento.

Per annullare queste azioni, è possibile eseguire nuovamente i comandi ma con un valore di 20 oppure è possibile eseguire i seguenti comandi per rimuovere la voce delle impostazioni "ExitTimeOut", che per impostazione predefinita non è inclusa in questi script diemon e agent di avvio:

sudo defaults delete / Sistema / Libreria / LaunchDaemons / c \

om.apple.coreservices.appleevents ExitTimeOut

sudo defaults delete / Sistema / Libreria / LaunchDaemons / c \

om.apple.securityd ExitTimeOut

sudo defaults delete / Sistema / Libreria / LaunchDaemons / c \

om.apple.mDNSResponder ExitTimeOut

sudo defaults delete / Sistema / Libreria / LaunchDaemons / c \

om.apple.diskarbitrationd ExitTimeOut

sudo defaults delete / Sistema / Libreria / LaunchAgents / com \

.apple.coreservices.appleid.authentication ExitTimeOut


 

Lascia Il Tuo Commento