Stay Hungry.Stay Foolish.
macOS下守护进程服务launchctl研究

launchctl unload和stop

launchctl unload是异步操作,会等待执行完成再返回 launchctl stop是同步操作 shell下面捕获launchctl unload和stop信号,这两个操作都是发送SIGTERM信号给关联的进程,在shell下面可以通过来捕获信号执行自己的异常处理

trap "echo 'Hello World';exit " TERM

如果超过一定时间发送SIGTERM之后程序没有自己退出,则会发送SIGKILL强制杀死进程

重启服务

launchctl  kickstart -k  system/mac.xxxx

杀死&禁用

launchctl bootout system/mac.xxx
launchctl disable system/mac.xxx 

访问被禁用之后,直接unload是无法启动,需要使用unload -w参数,可以用于禁用某些服务 或者

launchctl unload -w /path/xxx.plist

载入服务

launchctl load -w /path/xxx.plist

load必须需要有具体的plist路径文件

Print

有时候看到一个服务加载了,但是不知道从哪个plist加载,可以使用下面的命令

launchctl print system/mac.xxx

###被禁用的服务

/var/db/com.apple.xpc.launchd/disabled.plist
launchctl print system
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
评论

暂无评论~~