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三个条件判断即可,我使用时间长一些,所以稍复杂一些,见附件。
apachectl.tar.gz
替换后,别忘记再运行一次:
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
代碼: 選擇全部
551-Mac-mini:auto yehlu$ sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
551-Mac-mini:auto yehlu$ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist