4 votes

Exécutez le script avant le redémarrage/extinction

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.

4voto

Fuzzy Purple Monkey Points 702

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.

1voto

napcae Points 2031

Si vous voulez arrêter Apache de démarrer automatiquement sur votre ordinateur, vous voulez probablement décharger le .plist approprié avec launchctl:

Ouvrez un terminal, puis
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist

LesApples.com

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.

Powered by:

X