Можно ли выполнить сценарий/команду прямо перед выключением или перезапуском OS X?
Я хотел бы запустить, sudo apachectl stop
чтобы остановить автоматический запуск apache.
Вы можете использовать хук выхода:
sudo defaults write com.apple.loginwindow LogoutHook ~/.logouthook
echo $'#!/bin/bash\napachectl stop' > ~/.logouthook
chmod +x ~/.logouthook
Значением ключа LogoutHook может быть только путь к исполняемому файлу, а не команда оболочки. Хук выхода запускается с привилегиями суперпользователя, поэтому вам не нужен sudo.
Команда по умолчанию изменяет /var/root/Library/Preferences/com.apple.loginwindow.plist. Добавление ключа LogoutHook в /Library/Preferences/com.apple.loginwindow.plist не работает.
Если обработчик выхода из системы выполняется достаточно долго, отображается серый экран до тех пор, пока обработчик выхода не завершит работу. Похоже, что нет никакого ограничения по времени, после которого хуки выхода из системы принудительно завершаются.
Перехватчики выхода из системы устарели в версии 10.4, но я не нашел способа надежно запускать программы при выходе из системы с помощью launchd. У меня тоже не работает rc.local.shutdown. Я не знаю, как запустить хук выхода из системы перед выключением или перезапуском, но не перед выходом из системы.
Если вы хотите, чтобы Apache перестал запускаться с вашего компьютера при загрузке, вы, вероятно, захотите выгрузить соответствующий .plist с помощью launchctl:
Откройте терминал, затем
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
/usr/sbin/apachectl
?apachectl stop
просто работает launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
на OS X. См cat /usr/sbin/apachectl
. .
Эдди Келли
без холма