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

千雪吖_8088

千雪吖_8088

2026-03-25

904人浏览

原创

必须通过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

Trickle AI
Trickle AI

一款AI开发辅助工具,主要用于多功能零代码AI应用开发平台,适合需要提升相关任务效率的用户。

下载

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

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

daemon

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

相关专题

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

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

2026.03.18

725

21

bootstrap安装教程
bootstrap安装教程

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

2026.03.18

199

9

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

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

2023.09.27

3020

5

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

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

2026.02.03

249

24

string转int
string转int

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

2023.08.02

6619

3

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

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

2024.04.01

4684

5

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

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

2024.08.01

6077

7

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

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

2024.11.28

2502

7

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

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

2025.05.09

4864

14

热门下载

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

精品课程

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

共1课时 | 190人学习

PostgreSQL 教程
PostgreSQL 教程

共48课时 | 20.6万人学习

好课诞生记
好课诞生记

共20课时 | 7.2万人学习