Esegui lo script prima di riavviare / spegnere

3

È 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.

    
posta Till 29.10.2013 - 03:34
fonte

2 risposte

4

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.

    
risposta data 29.10.2013 - 11:55
fonte
1

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

    
risposta data 29.10.2013 - 10:14
fonte

Leggi altre domande sui tag