Est-il possible d'exécuter un script/commande juste avant que OS X ne s'éteigne ou redémarre ?
Je voudrais exécuter sudo apachectl stop
pour arrêter apache de démarrer automatiquement.
Est-il possible d'exécuter un script/commande juste avant que OS X ne s'éteigne ou redémarre ?
Je voudrais exécuter sudo apachectl stop
pour arrêter apache de démarrer automatiquement.
Vous pouvez utiliser un crochet de déconnexion :
sudo defaults write com.apple.loginwindow LogoutHook ~/.logouthook
echo $'#!/bin/bash\napachectl stop' > ~/.logouthook
chmod +x ~/.logouthook
La valeur de la clé LogoutHook ne peut être qu'un chemin vers un exécutable et non une commande shell. Le crochet de déconnexion est exécuté avec des privilèges superutilisateur, donc vous n'avez pas besoin de sudo.
La commande defaults modifie /var/root/Library/Preferences/com.apple.loginwindow.plist. Ajouter une clé LogoutHook à /Library/Preferences/com.apple.loginwindow.plist ne fonctionne pas.
Si un crochet de déconnexion prend suffisamment de temps pour s'exécuter, un écran gris est affiché jusqu'à ce que le crochet de déconnexion se termine. Il ne semble pas y avoir de limite de temps après laquelle les crochets de déconnexion sont forcés de se terminer.
Les crochets de déconnexion ont été obsolètes dans 10.4, mais je n'ai pas trouvé de moyen fiable d'exécuter des programmes à la déconnexion avec launchd. Je n'ai pas non plus réussi à faire fonctionner rc.local.shutdown. Je ne connais aucun moyen d'exécuter un crochet de déconnexion avant de fermer ou de redémarrer, mais pas avant la déconnexion.
LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.