实现Mac开机自动启动指定服务
本文主要讲的是 macOS 重新启动后, 自动运行我们指定的服务, 实现开机自启动.
比如我们要实现让 hugo 本地 sever 开机自启动.
macOS 的开机自启说明文档参考:
man launchd
创建并配置服务的 plist 文件
| |
注意:
服务的启动命令不能放置到后台, 比如启动命令结尾不能加
&;
KeepAlive设置为true, 系统默认每 10 秒会检查一次服务进程的存活, 发现无相关进程会重新启动.
Label表示服务的名称, 一般我们以服务 plist 配置文件的名称即可, 不可加 plist 扩展名.
ProgramArguments表示带参数的命令行, 命令必需使用绝对路径, 每个参数独立一行;
WorkingDirectory表示命令在哪个目录下运行, 即工作目录, 这个路径也必需是绝对路径;
RunAtLoad表示在将该配置文件注册(load)到系统中时就运行服务的启动命令;
最后再强调一遍, 命令的路径和工作目录都必需是绝对路径, 使用
$HOME和~都不可以.
将配置文件注册到系统中
| |
查看是否已注册成功: launchctl list|grep hugo
如果注册成功, 执行ps aux|grep hugo可发现 hugo 本地 server 已经启动了.
取消注册的命令: launchctl unload ~/Library/LaunchAgents/localhost.hugo.plist
注意:
launchctl load这个步骤可以没有, 重启后 macOS 会自动注册并启动.
如果我们不想让 hugo 开机自启动了, 需要将该文件
localhost.hugo.plist移除.
总结
有很多 brew 安装的软件, 比如 mysql, 通过brew services start mysql,
即可实现开机自启, 这个原理和上面介绍的方式是一致的. 我们可以在
~/Library/LaunchAgents目录中找到 mysql 的 plist 文件.
对于其他无法通过brew services start的方式来实现开机自启的自定义服务,
我们就可以按照上面介绍的方式进行了, 非常友好方便.