È possibile eseguire uno script / comando subito prima che OS X si arresti o si riavvii?
Mi piacerebbe eseguire sudo apachectl stop
per fermare apache dall'avvio automatico.
Puoi utilizzare un hook di logout:
sudo defaults write com.apple.loginwindow LogoutHook ~/.logouthook
echo $'#!/bin/bash\napachectl stop' > ~/.logouthook
chmod +x ~/.logouthook
Il valore della chiave LogoutHook può essere solo un percorso verso un eseguibile e non un comando di shell. L'hook di logout viene eseguito con i privilegi di superutente, quindi non è necessario sudo.
Il comando defaults modifica /var/root/Library/Preferences/com.apple.loginwindow.plist. L'aggiunta di una chiave LogoutHook a /Library/Preferences/com.apple.loginwindow.plist non funziona.
Se un hook di logout richiede abbastanza tempo per essere eseguito, viene visualizzata una schermata grigia finché non termina il hook di logout. Non sembra esserci alcun limite di tempo dopo il quale i hook di logout sono forzati a terminare.
I ganci di disconnessione erano deprecati in 10.4, ma non ho trovato alcun modo per eseguire programmi in modo affidabile con launchd. Non ho ancora ottenuto rc.local.shutdown per funzionare. Non conosco alcun modo per eseguire un hook di disconnessione prima di arrestare o riavviare, ma non prima di disconnettermi.
Se vuoi che Apache smetta di avviarsi dal tuo computer all'avvio, probabilmente vuoi scaricare l'appropriato .plist con launchctl:
Apri un terminale, quindi
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
Leggi altre domande sui tag apache shutdown applescript script automator