讲师中心 微信公众号
AI工具推荐 视频效率加速

Mac怎么配置系统级守护进程_Mac如何用LaunchDaemon创建开机自动运行的服务【进阶】

千雪吖_8088

千雪吖_8088

发布时间:2026-03-25 19:38:03

|

904人浏览过

|

来源于php中文网

原创

必须通过LaunchDaemon机制注册为系统级守护进程,即创建/Library/LaunchDaemons/下plist文件,配置Label、ProgramArguments、RunAtLoad和KeepAlive等键,设权限644并用bootstrap加载。

mac怎么配置系统级守护进程_mac如何用launchdaemon创建开机自动运行的服务【进阶】

如果您希望某个程序在 macOS 系统启动早期即以 root 权限自动运行并长期驻留,必须通过 LaunchDaemon 机制注册为系统级守护进程。以下是实现此目标的多种可行方法:

一、创建并加载/Library/LaunchDaemons/下的plist文件

该方法将服务注册为系统级守护进程,由 launchd 在内核初始化完成后、用户登录前即加载,以 root 身份持续运行,适用于需全局生效、高权限或无用户会话依赖的后台任务。

1、使用终端创建配置目录(如不存在):sudo mkdir -p /Library/LaunchDaemons

2、用 nano 编辑器新建 plist 文件:sudo nano /Library/LaunchDaemons/com.example.myservice.plist

3、输入符合规范的 XML 内容,确保包含 Label(全局唯一,推荐反向域名格式)、ProgramArguments(数组形式,首项为绝对路径可执行文件)、RunAtLoad(设为 实现开机即启)及 KeepAlive(设为 保证常驻)等必需键。

4、保存退出后,修正文件权限:sudo chown root:wheel /Library/LaunchDaemons/com.example.myservice.plist

5、设置文件访问权限为 644:sudo chmod 644 /Library/LaunchDaemons/com.example.myservice.plist

6、使用新语法加载服务:sudo launchctl bootstrap system /Library/LaunchDaemons/com.example.myservice.plist

二、配合启动脚本封装复杂逻辑

当目标程序依赖环境变量、工作目录或需前置初始化时,直接调用二进制易失败;此时应编写独立 shell 启动脚本,并在 plist 中指向该脚本,从而解耦配置与执行逻辑。

1、创建可执行脚本目录:sudo mkdir -p /usr/local/bin/myservice

2、新建并编辑启动脚本:sudo nano /usr/local/bin/myservice/run.sh

3、在脚本中显式声明环境变量(如 PATH)、切换工作目录,并以 exec 方式调用主程序:exec /usr/local/bin/myservice/main --config /usr/local/bin/myservice/config.yaml

4、赋予脚本执行权限:sudo chmod 755 /usr/local/bin/myservice/run.sh

5、在 plist 的 ProgramArguments 中指定 /bin/bash 和 /usr/local/bin/myservice/run.sh

6、同步调整脚本目录属主与权限:sudo chown -R root:wheel /usr/local/bin/myservice

7、重新加载服务配置:sudo launchctl bootout system /Library/LaunchDaemons/com.example.myservice.plist && sudo launchctl bootstrap system /Library/LaunchDaemons/com.example.myservice.plist

三、启用日志重定向便于排错

系统级守护进程默认不输出到终端,其 stdout 与 stderr 会被丢弃或混入 system.log,导致问题难以定位;通过显式指定日志路径,可将运行时输出分离存储,大幅提升调试效率。

1、预先创建日志目录并授权:sudo mkdir -p /var/log/myservice

2、赋予 root 写入权限:sudo chown root:wheel /var/log/myservice

3、在 plist 的 中添加两项键值:StandardOutPath/var/log/myservice/out.log

4、添加错误日志路径:StandardErrorPath/var/log/myservice/err.log

5、确保日志文件路径为绝对路径,且 launchd 有权限写入:sudo touch /var/log/myservice/out.log /var/log/myservice/err.log

6、重新加载配置使日志设置生效:sudo launchctl kickstart -k system/com.example.myservice

四、验证服务状态与即时调试

加载成功不等于服务正常运行;launchd 提供实时状态查询与强制干预能力,可用于确认进程是否已启动、检查退出原因或触发单次执行,避免重启系统反复测试。

1、列出所有系统域服务并过滤目标标识:sudo launchctl list | grep example

2、打印详细运行时信息(含退出码、上次启动时间):sudo launchctl print system/com.example.myservice

3、若服务未运行,手动触发一次启动:sudo launchctl kickstart -k system/com.example.myservice

4、立即停止当前实例(不卸载配置):sudo launchctl kill 9 system/com.example.myservice

5、查看控制台中该进程最近输出:log show --predicate 'process == "myservice"' --last 5m

6、若需临时禁用服务而不删除文件,执行:sudo launchctl bootout system /Library/LaunchDaemons/com.example.myservice.plist

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

相关专题

更多
bootstrap框架介绍
bootstrap框架介绍

本专题整合了bootstrap框架相关介绍,阅读专题下面的文章了解更多详细内容。

725

2026.03.18

bootstrap安装教程
bootstrap安装教程

本专题整合了bootstrap安装相关教程,阅读专题下面的文章了解更多详细操作教程。

199

2026.03.18

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

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

3040

2023.09.27

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

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

249

2026.02.03

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

6659

2023.08.02

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

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

4704

2024.04.01

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

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

6097

2024.08.01

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

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

2502

2024.11.28

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

60

2026.10.22

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
安装 Xdebug 并配置 phpstorm
安装 Xdebug 并配置 phpstorm

共1课时 | 192人学习

PostgreSQL 教程
PostgreSQL 教程

共48课时 | 20.7万人学习

好课诞生记
好课诞生记

共20课时 | 7.2万人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn