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 # 打印帮助
参考:
本文作者:Undefined443
本文链接:https://www.cnblogs.com/Undefined443/p/18805963
版权声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步