0

0

MacOS系统自启动服务Launchd配置文件编写与加载

冷漠man

冷漠man

发布时间:2026-03-12 19:36:13

|

548人浏览过

|

来源于php中文网

原创

macOS自启动服务由launchd管理,需编写符合规范的.plist文件并正确放置到~/Library/LaunchAgents/(用户级)或/Library/LaunchDaemons/(系统级),注意Label唯一性、绝对路径、EnvironmentVariables设置及launchctl命令加载调试。

macos系统自启动服务launchd配置文件编写与加载

macOS 的自启动服务通过 launchd 管理,核心是编写正确的 .plist 配置文件,并将其正确加载到系统或用户域中。关键在于路径、权限、标签(Label)唯一性以及触发条件的准确设置。

plist 文件必须满足的基本规范

Launchd 的配置文件是 XML 格式(`.plist`),需严格遵循 Apple 定义的结构。常见错误包括标签名拼写错误(如 RunAtLoad 写成 RunAtLoad)、缺少必要键(如 Label)、值类型不匹配(布尔值必须用 <true/><false/>,不能写 yes1)。

  • Label 必须全局唯一,推荐使用反向域名格式,例如 com.example.myserver
  • ProgramArguments 是数组,首项为可执行文件路径,后续为参数;不要用 Program 单独指定命令(已废弃)
  • 路径中的波浪号 ~ 不会被自动展开,需写绝对路径,如 /Users/username/bin/myscript.sh
  • 若脚本需环境变量(如 $PATH),应在 plist 中显式设置 EnvironmentVariables 字典

加载位置决定作用域和权限

plist 文件放在不同目录,由不同主体加载,权限和生命周期也不同:

  • 用户级服务(推荐日常使用):放至 ~/Library/LaunchAgents/,随用户登录启动,以当前用户身份运行,无需 sudo
  • 系统级服务(需管理员权限):放至 /Library/LaunchDaemons/,系统启动时加载,以 root 身份运行;文件属主应为 root:wheel,权限设为 644
  • /System/Library/LaunchDaemons//System/Library/LaunchAgents/ 为系统保留,普通用户不可写,也不应修改

常用启动与调试操作

加载、卸载和排错都通过 launchctl 命令完成,注意命令语法在 macOS 12+ 已统一为子命令形式:

腾讯交互翻译
腾讯交互翻译

腾讯AI Lab发布的一款AI辅助翻译产品

下载
  • 加载服务:launchctl load ~/Library/LaunchAgents/com.example.myservice.plist
  • 立即启动(即使未设 RunAtLoad):launchctl start com.example.myservice
  • 停止并卸载:launchctl stop com.example.myservice && launchctl unload ~/Library/LaunchAgents/com.example.myservice.plist
  • 查看状态:launchctl list | grep examplelaunchctl print gui/$(id -u)/com.example.myservice
  • 日志排查:服务输出默认重定向到 system.logconsole,可在“控制台”App 中筛选进程名;也可在 plist 中添加 StandardOutPathStandardErrorPath 指定日志文件

典型配置示例(用户级后台脚本)

以下是一个监听文件变化并执行脚本的用户级 agent 示例:

<?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.watch-folder</string>

  <key>ProgramArguments</key>
  <array>
    <string>/usr/bin/python3</string>
    <string>/Users/username/scripts/watch.py</string>
  </array>

  <key>RunAtLoad</key>
  <true/>

  <key>KeepAlive</key>
  <true/>

  <key>EnvironmentVariables</key>
  <dict>
    <key>PATH</key>
    <string>/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin</string>
  </dict>

  <key>StandardOutPath</key>
  <string>/Users/username/logs/watch.log</string>

  <key>StandardErrorPath</key>
  <string>/Users/username/logs/watch.err</string>
</dict>
</plist>

保存为 ~/Library/LaunchAgents/com.example.watch-folder.plist,确保脚本有执行权限(chmod +x /Users/username/scripts/watch.py),再执行 launchctl load 即可生效。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

192

2023.09.27

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

19

2026.02.03

pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1948

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

2119

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

1168

2024.11.28

console接口是干嘛的
console接口是干嘛的

console接口是一种用于在计算机命令行或浏览器开发工具中输出信息的工具,提供了一种简单的方式来记录和查看应用程序的输出结果和调试信息。本专题为大家提供console接口相关的各种文章、以及下载和课程。

420

2023.08.08

console.log是什么
console.log是什么

console.log 是 javascript 函数,用于在浏览器控制台中输出信息,便于调试和故障排除。想了解更多console.log的相关内容,可以阅读本专题下面的文章。

541

2024.05.29

macOS怎么切换用户账户
macOS怎么切换用户账户

在 macOS 系统中,可通过多种方式切换用户账户。如点击苹果图标选择 “系统偏好设置”,打开 “用户与群组” 进行切换;或启用快速用户切换功能,通过菜单栏或控制中心的账户名称切换;还能使用快捷键 “Control+Command+Q” 锁定屏幕后切换。

358

2025.05.09

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号