mac os不像linux有/etc/init.d/rc.local以及service的方式可以設置程序隨機啟動,而是使用plist文件管理。
plist文件分布在:/System/Library/LaunchDaemons/中的最多,其中apache的httpd程序啟動配置文件org.apache.httpd.plist就在這里。
但這些配置文件可由程序launchctl設置是否加載。也就是說,在launchctl list命令結果中出現的plist文件才會有效。
launchctl需要root權限。
禁止其隨機啟動方法:
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
如果沒有任何輸出就是成功卸載了。如果要加載,把unload換成load即可。
第二次運行unload會發現錯誤:launchctl: Error unloading: org.apache.httpd,這表示已經成功卸載了。
如果要查看launchctl用法,可以在shell終端輸入launchctl,然后輸入help回車。quit退出。
我在我的mac上操作成功,重啟后httpd不會啟動了。但奇怪的是當我自己用apachectl啟動了httpd后,第二天開電腦發現httpd又自動啟動了。於是我懷疑是否apachectl腳本里將其load了,打開/usr/sbin/apachectl,發現啟動httpd竟然使用了launchctl的load方法。
為了讓啟動與否的主動權掌握在我自己手里,只好拋棄使用apachectl啟動,使用自己寫的httpd腳本啟動,其實就是里面實現一下start,stop,restart三個條件判斷即可,我使用時間長一些,所以稍復雜一些,見附件。
替換后,別忘記再運行一次:
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist