Lorsque vous éteignez votre Mac, entre le moment où vous cliquez sur le bouton Éteindre et le moment où votre Mac cesse effectivement de fonctionner, il se produit plusieurs secondes. Ce temps est nécessaire au système pour fermer toutes les applications et services qui tournent en arrière-plan. Dans la plupart des cas, ce laps de temps n'est pas très long. Toutefois, l'extinction peut prendre de longues minutes à quelques occasions.
Plusieurs causes sont à l'origine de ce phénomène. Premièrement, les applications qui requièrent une action pour se fermer. Par exemple lors de l'enregistrement d'un fichier ou la confirmation de fermeture du logiciel. Deuxièmement, les services tournants en arrière-plan et qui ne répondent pas ou plus. Ils obligent OS X à attendre pendant un temps déterminé avant de les forcer à quitter. Enfin, il arrive aussi que les périphériques branchés à votre Mac ralentissent l'extinction. Cnet livre une astuce pour accélérer l'extinction d'un Mac.
Par défaut, le système attend que les processus se ferment, mais si après 20 secondes rien ne se passe, il enverra une requête. Par conséquent, pour les services qui ont tendance à être plus récalcitrants que les autres, il suffit de changer cette valeur par une valeur inférieure pour gagner du temps. Le système forcera la fermeture plus tôt.
Voici la liste des coupables :
AppleEvents : il permet à tous les processus de communiquer avec le système (et est la base pour AppleScript). Il peut mettre un certain temps à s'éteindre lorsque d'autres actions sont en cours (par exemple, si vous synchronisez votre iPhone et que vous voulez éteindre votre Mac).
securityd : il gère l'accès au trousseau ainsi que d'autres autorisations de sécurité. Il ralentit l'extinction si une interaction avec l'utilisateur est demandée.
mDNSResponder : il gère les services réseau. Il peut ralentir la fermeture si le réseau local est mal configuré.
diskarbitrationd : il surveille le stockage interne de la machine. Il risque de ne pas répondre si les disques sont utilisés ou si un lecteur déconnecté ou en veille prend du temps pour se réveiller.
Authentification ID Apple : comme son nom l'indique, il s'occupe de la vérification de votre identifiant Apple avec les applications. Si l'accès au réseau ne se fait pas correctement ou si les serveurs d'Apple ne répondent pas, il ne se ferme pas tout de suite.
La gestion du délai d'attente des services se fait par launchd. En demandant au processus de raccourcir le temps d'attente, même de moitié, vous pouvez accélérer considérablement l'arrêt du système. Pour modifier ce délai, vous devrez exécuter les commandes suivantes, que vous pouvez copier et coller dans le Terminal — la première fois, vous aurez à saisir votre mot de passe utilisateur pour confirmer l'action :
sudo defaults write /System/Library/LaunchDaemons/c\
om.apple.coreservices.appleevents ExitTimeOut -int 5
sudo defaults write /System/Library/LaunchDaemons/c\
om.apple.securityd ExitTimeOut -int 5
sudo defaults write /System/Library/LaunchDaemons/c\
om.apple.mDNSResponder ExitTimeOut -int 5
sudo defaults write /System/Library/LaunchDaemons/c\
om.apple.diskarbitrationd ExitTimeOut -int 5
sudo defaults write /System/Library/LaunchAgents/com.\
apple.coreservices.appleid.authentication ExitTimeOut -int 5
Dans le code ci-dessus, la valeur est réglée sur 5, signifiant qu'OS X va attendre 5 secondes avant de tuer un processus lors de l'extinction. Vous pouvez changer ce temps par n'importe quelle valeur entière supérieure à zéro. Zéro désactive le délai, ce qui fait que le processus ne sera jamais tué.
Pour annuler ces actions, vous pouvez exécuter les commandes à nouveau, mais avec une valeur de 20, ou exécuter les commandes suivantes pour supprimer l'entrée "ExitTimeOut" des paramètres, qui par défaut n'existe pas.
sudo defaults delete /System/Library/LaunchDaemons/c\
om.apple.coreservices.appleevents ExitTimeOut
sudo defaults delete /System/Library/LaunchDaemons/c\
om.apple.securityd ExitTimeOut
sudo defaults delete /System/Library/LaunchDaemons/c\
om.apple.mDNSResponder ExitTimeOut
sudo defaults delete /System/Library/LaunchDaemons/c\
om.apple.diskarbitrationd ExitTimeOut
sudo defaults delete /System/Library/LaunchAgents/com\
.apple.coreservices.appleid.authentication ExitTimeOut