macos 下使用launchctl和plist启动进程
macOS 下可以用 launchctl 和 plist 手动启动应用进程,或者让程序随系统启动。它有好几个域(domain)来将服务进行分类,并管理不同的权限。最常用的是System和GUI,下面是使用的一些规则:
system 域
有需要使用 root 权限的,可以使用 System 域来启动,但是 plist 必须放在:/Library/LaunchDaemons/ 下面。(/System/Library/LaunchDaemons/ 下是系统自带的一些服务,用户不用考虑这个路径)
plist 文件的权限也需要调整,用户和组是 root:wheel,权限是 644 (-rw-r--r--)。
加载和卸载的命令是:
sudo launchctl bootstrap system /Library/LaunchDaemons/com.xxx.plist |
gui 域
普通应用直接使用 gui 域就可以了。对应的plist文件需要放在:~/Library/LaunchAgents/(当前用户)或 /Library/LaunchAgents/(所有用户)下面。
加载和卸载命令是:
launchctl bootstrap gui/uid ~/Library/LaunchAgents/com.xxx.plist |
命令中的 uid 可以通过 id 命令获取:
id -u username |
plist 内容
|
其他功能
launchctl 还有其他的命令,比如 enable 和 disable,kickstart 等,有需要可以通过 man launchctl 去详细了解。