Wrayの知识库 Wrayの知识库
首页
  • Java 基础
  • Java 集合
  • Java 并发
  • Java IO
  • JVM
  • Spring Framework
  • Spring Boot
  • Spring Cloud
  • Spring Security
  • MySQL
  • Redis
  • 计算机基础
  • 操作系统原理
  • Linux
  • MacOS
  • Windows
  • 系统工程与研究专题
  • AI 基础
  • 大模型基础
  • Prompt 工程
  • RAG 检索增强生成
  • Agent 智能体
  • AI 应用开发
  • AI 工程化
  • AI 安全与治理
  • AI 面试与设计题
  • 纸质书
  • 电子书
  • 学习课程
疑难杂症
GitHub (opens new window)
首页
  • Java 基础
  • Java 集合
  • Java 并发
  • Java IO
  • JVM
  • Spring Framework
  • Spring Boot
  • Spring Cloud
  • Spring Security
  • MySQL
  • Redis
  • 计算机基础
  • 操作系统原理
  • Linux
  • MacOS
  • Windows
  • 系统工程与研究专题
  • AI 基础
  • 大模型基础
  • Prompt 工程
  • RAG 检索增强生成
  • Agent 智能体
  • AI 应用开发
  • AI 工程化
  • AI 安全与治理
  • AI 面试与设计题
  • 纸质书
  • 电子书
  • 学习课程
疑难杂症
GitHub (opens new window)
  • 操作系统概述
  • 计算机基础

  • 操作系统原理

  • Linux

  • MacOS

    • macOS简介与系统架构
    • Finder终端与目录结构
    • Homebrew与开发环境
    • launchd与后台服务
      • 1. 学习目标
      • 2. 知识框架
      • 3. 核心概念
      • 4. 机制与实践
      • 5. 常用命令与工具
      • 6. 常见误区
      • 7. 进阶研究方向
      • 8. Tips 快问快答
      • 9. 总结
    • macOS权限隐私与系统安全
    • macOS网络配置与排障
    • 存储TimeMachine与APFS
    • macOS性能诊断与开发者工具
  • Windows

  • 系统工程与研究专题

目录

launchd与后台服务

launchd 是 macOS 的服务管理器,负责系统服务、用户代理、定时任务和按需启动。它与 Linux systemd 思路类似,但配置和边界不同。

# 1. 学习目标

  • 理解 LaunchDaemon、LaunchAgent 和 plist 配置。
  • 能管理后台服务、自启动和定时任务。
  • 能排查服务未启动、权限不足和环境变量问题。

# 2. 知识框架

launchd与后台服务
├─ 入门:建立术语、对象和日常操作的直觉
├─ 进阶:理解机制、边界和跨平台差异
└─ 专家:能排障、能设计、能阅读实现和研究材料

LaunchDaemon 偏系统级服务,LaunchAgent 偏用户会话任务;两者运行身份、加载时机和可访问资源不同。

# 3. 核心概念

主题 说明 工程关注
LaunchDaemon 系统级后台任务,通常在用户登录前运行 服务进程、权限、日志
LaunchAgent 用户级后台任务,依赖用户会话 菜单栏工具、用户任务
plist launchd 配置文件格式 Label、ProgramArguments、RunAtLoad
KeepAlive 控制服务保持运行或按条件重启 恢复策略、重启风暴

# 4. 机制与实践

  1. 系统服务放 /Library/LaunchDaemons,用户任务放 ~/Library/LaunchAgents。
  2. plist 中使用绝对路径,显式配置 WorkingDirectory 和日志输出。
  3. 修改配置后用 launchctl bootstrap/bootout 重新加载。

# 5. 常用命令与工具

命令或工具 作用 使用建议
launchctl list 列出当前 launchd 任务 查看加载状态
plutil -lint file.plist 校验 plist 语法 修改配置后先检查
launchctl print system/label 查看系统级任务详情 排查加载和状态

# 6. 常见误区

  • 把 Agent 当 Daemon:用户会话依赖和权限不同,放错位置会导致启动失败。
  • 依赖 Shell 配置:launchd 不会自动读取交互式 Shell 环境。
  • 日志未配置:服务失败时没有标准输出和错误输出,排障困难。

# 7. 进阶研究方向

  • 阅读 launchd.plist 的官方字段说明。
  • 比较 launchd、systemd、Windows 服务模型差异。
  • 设计 macOS 开发机后台任务的统一管理规范。

# 8. Tips 快问快答

Q:LaunchAgent 和 LaunchDaemon 怎么选?

A:需要用户会话的用 Agent,系统级后台服务用 Daemon。

Q:为什么终端能运行,launchd 不能?

A:环境变量、工作目录、用户权限和图形会话不同。

Q:plist 修改后为什么不生效?

A:需要卸载并重新加载任务,且先确认 plist 语法正确。

# 9. 总结

launchd 是 macOS 后台任务的核心入口。理解 Agent、Daemon 和 plist 后,自启动和服务排障会清晰很多。

上次更新: 2026/06/25, 10:02:19
Homebrew与开发环境
macOS权限隐私与系统安全

← Homebrew与开发环境 macOS权限隐私与系统安全→

Copyright © 2023-2026 Wray | 鄂ICP备2024050235号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式