macOS launchd
launchd 是 macOS 的系统启动和服务管理工具,相当于 Linux 的 systemd。
文件路径:
-
~/Library/LaunchAgents:仅适用于登录用户的第三方代理 -
/Library/LaunchAgents:基于每个用户且所有用户适用的第三方代理 -
/Library/LaunchDaemons:第三方系统守护进程 -
/System/Library/LaunchAgents:Apple 提供的基于每个用户且所有用户适用的代理 -
/System/Library/LaunchDaemons:Apple 提供的系统守护进程 -
launchd区分代理和守护进程。主要区别在于代理是代表登录用户运行的,而守护进程是代表根用户或通过 UserName 键指定的任何用户运行的。只有代理可以访问 macOS GUI。 -
配置文件命名方式为
com.example.myjob.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>Label</key>
<string>com.example.myjob</string>
<!-- 程序参数 -->
<key>ProgramArguments</key>
<array>
<string>/path/to/your/script</string> <!-- 脚本或程序路径 -->
<string>argument1</string> <!-- 可选参数 -->
<string>argument2</string> <!-- 可选参数 -->
</array>
<!-- 定时 -->
<key>StartInterval</key>
<integer>3600</integer> <!-- 3600 秒运行一次 -->
<!-- 可选:在加载时立即运行 -->
<key>RunAtLoad</key>
<true/>
</dict>
</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>Label</key>
<string>com.example.myjob</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/your/script</string>
</array>
<!-- 定点 -->
<key>StartCalendarInterval</key>
<dict>
<key>Minute</key>
<integer>0</integer>
<key>Hour</key>
<integer>12</integer>
</dict>
</dict>
</plist>
管理任务
launchctl 中的许多子命令都需要一个指示子命令目标域或服务的指定符。指定符可以采用以下形式之一:
system/[service-name]:系统域user/<uid>/[service-name]:用户域login/<asid>/[service-name]:登录域gui/<uid>/[service-name]:GUI 域pid/<pid>/[service-name]:PID 域
launchctl enable <service-target> # 启用任务
launchctl disable <service-target> # 禁用任务
launchctl kickstart <service-target> # 立即运行任务
launchctl blame <service-target> # 描述服务启动原因
launchctl print <service-target> # 打印服务信息
传统命令:
launchctl start <label> # 启动任务
launchctl stop <label> # 停止任务
launchctl load <path> # 加载指定的配置文件
launchctl remove <label> # 移除任务
launchctl list # 列出所有加载到 launchd 中的任务
launchctl manageruid # 打印与调用者 launchd 上下文关联的 UID
launchctl help # 打印帮助
参考:

浙公网安备 33010602011771号