Ist es möglich, ein Skript/einen Befehl direkt vor dem Herunterfahren oder Neustarten von OS X auszuführen?
Ich möchte ausführen, sudo apachectl stop
um zu verhindern, dass Apache automatisch gestartet wird.
Sie können einen Logout-Hook verwenden:
sudo defaults write com.apple.loginwindow LogoutHook ~/.logouthook
echo $'#!/bin/bash\napachectl stop' > ~/.logouthook
chmod +x ~/.logouthook
Der Wert des LogoutHook-Schlüssels kann nur ein Pfad zu einer ausführbaren Datei und kein Shell-Befehl sein. Der Logout-Hook wird mit Superuser-Rechten ausgeführt, sodass Sie sudo nicht benötigen.
Der Standardbefehl ändert /var/root/Library/Preferences/com.apple.loginwindow.plist. Das Hinzufügen eines LogoutHook-Schlüssels zu /Library/Preferences/com.apple.loginwindow.plist funktioniert nicht.
Wenn die Ausführung eines Logout-Hooks lange genug dauert, wird ein grauer Bildschirm angezeigt, bis der Logout-Hook beendet wird. Es scheint kein Zeitlimit zu geben, nach dem Logout-Hooks beendet werden müssen.
Abmelde-Hooks waren in 10.4 veraltet, aber ich habe keine Möglichkeit gefunden, Programme beim Abmelden zuverlässig mit launchd auszuführen. Ich habe rc.local.shutdown auch nicht zum Laufen gebracht. Ich kenne keine Möglichkeit, vor dem Herunterfahren oder Neustarten einen Abmelde-Hook auszuführen, aber nicht vor dem Abmelden.
Wenn Sie möchten, dass Apache beim Booten nicht mehr von Ihrem Computer startet, möchten Sie wahrscheinlich die entsprechende .plist mit launchctl entladen:
Öffnen Sie dann ein Terminal
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
/usr/sbin/apachectl
?apachectl stop
läuft nur launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
unter OS X. Siehe cat /usr/sbin/apachectl
.
Eddie Kelly
kein Hang