在MacOS上自定义启动服务

写了一个Golang的脚本在本机运行,通过定义LaunchAgents服务来实现自启动

在macOS中,可以通过定义LaunchAgents服务来启动自定义程序。创建一个com.custom.your.name.plist文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>KeepAlive</key>
	<true/>
	<key>Label</key>
	<string>com.custom.your.name</string>
	<key>WorkingDirectory</key>
    <string>/Users/user/Developer</string>
	<key>LimitLoadToSessionType</key>
	<array>
		<string>Aqua</string>
		<string>Background</string>
		<string>LoginWindow</string>
		<string>StandardIO</string>
		<string>System</string>
	</array>
	<key>ProgramArguments</key>
	<array>
		<string>/Users/user/Developer/run_program</string>
	</array>
	<key>RunAtLoad</key>
	<true/>
</dict>
</plist>

在上面的例子中,我们定义了一个名为com.custom.your.name的服务。其中,WorkingDirectory键指定了程序运行的目录,ProgramArguments键指定了要运行的程序路径,RunAtLoad键指定了在系统启动时启动该服务。

# 参数说明: 
* `KeepAlive` 保持运行
* `Label` 服务名
* `ProgramArguments` 要运行的程序和要携带的参数
* `RunAtLoad` 系统启动时启动该服务

将这个plist文件保存到~/Library/LaunchAgents目录中。这个目录是系统用户LaunchAgents服务的默认位置。

这个时候在MacOS 13上应该会提示你

要立马启动它,你需要执行


launchctl load ~/Library/LaunchAgents/com.custom.your.name.plist

如果一切顺利,该服务将被成功加载并启动。可以使用以下命令来检查服务的状态:

launchctl list | grep com.custom.your.name

这将列出所有正在运行的LaunchAgents服务,并查找名为com.custom.your.name的服务。

如果需要停止该服务,可以使用以下命令:

launchctl unload ~/Library/LaunchAgents/com.custom.your.name.plist

这将卸载并停止该服务。

💡
需要注意的是,在定义LaunchAgents服务时,请确保指定的程序路径是正确的,并且该程序具有可执行权限。如果指定的程序路径不存在或无法访问,则该服务可能无法正常启动。