Mac怎么编写launchd配置文件_Mac如何创建plist文件实现开机自启和定时任务【方法】

夏芳姑娘_2953

夏芳姑娘_2953

2026-03-23

790人浏览

原创

Mac中实现开机自启或定时任务需编写launchd plist文件:系统级存/Library/LaunchDaemons/,用户级存~/Library/LaunchAgents/;开机自启用RunAtLoad和KeepAlive,定时任务用StartCalendarInterval或StartInterval;需plutil校验、launchctl加载并配置日志调试。

mac怎么编写launchd配置文件_mac如何创建plist文件实现开机自启和定时任务【方法】

如果您希望在Mac系统中实现程序开机自启或按指定时间自动执行任务,则需要编写符合launchd规范的plist配置文件。以下是完成此目标的具体方法:

一、理解launchd plist文件的基本结构与存放位置

launchd通过XML格式的plist文件定义服务行为,文件需遵循Apple规定的DTD结构,并保存在特定目录下以触发不同加载时机。系统级任务存于/Library/LaunchDaemons/,用户级任务存于~/Library/LaunchAgents/,权限和加载时机由此区分。

1、使用文本编辑器(如TextEdit切换为纯文本模式,或VS Code、Sublime Text)新建一个以.plist为扩展名的文件,例如com.example.backup.plist。

2、在文件开头写入标准XML声明与DOCTYPE,确保根元素为,并包含Label键作为唯一标识符。

3、根据用途选择存放路径:开机自启且需系统权限的服务必须放入/Library/LaunchDaemons/,且文件属主为root:wheel,权限设为644;仅当前用户登录后运行的任务则放入~/Library/LaunchAgents/,属主为当前用户,权限同样为644。

二、编写开机自启型plist文件

此类配置在系统启动完成、用户未登录时即加载,适用于后台守护进程,依赖RunAtLoad键启用立即执行,常配合KeepAlive维持进程存活。

1、在内添加Labelcom.example.myservice,字符串须全局唯一且不含空格或下划线以外的特殊字符。

2、添加ProgramArguments/usr/local/bin/myscript.sh,指定完整路径的可执行文件或脚本。

3、添加RunAtLoad和KeepAlive,确保开机即运行且异常退出后自动重启。

4、若脚本需图形界面交互,还需加入SessionCreate;若需等待网络就绪,添加StartOnMount。

三、编写定时任务型plist文件

定时任务通过StartCalendarInterval或StartInterval控制触发时机,前者支持精确到分钟的周期(如每天上午9点),后者为固定秒数间隔(如每3600秒)。

1、在中添加StartCalendarIntervalHour9Minute0,表示每日9:00执行。

2、若需多时段运行,可将StartCalendarInterval设为数组,每个元素为独立,分别定义不同时间点。

Moshi Chat
Moshi Chat

Moshi Chat是一款由 Kyutai 推出的实时语音对话 AI 模型与聊天演示。

下载

3、使用StartInterval替代时,直接写入StartInterval7200,代表每2小时运行一次。

4、为避免任务堆积,建议同时添加ThrottleInterval3600,限制两次启动最小间隔为1小时。

四、验证与加载plist文件

语法错误会导致launchd拒绝加载,因此必须校验XML格式正确性,并通过命令行工具完成注册与状态检查。

1、在终端中执行plutil -lint /path/to/your.plist,返回“OK”表示语法无误;若报错,需根据提示修正标签闭合或键名拼写。

2、对系统级plist,先用sudo chown root:wheel /Library/LaunchDaemons/com.example.myjob.plist修改属主,再执行sudo chmod 644 /Library/LaunchDaemons/com.example.myjob.plist设置权限。

3、加载配置:用户级任务运行launchctl load ~/Library/LaunchAgents/com.example.myjob.plist;系统级任务运行sudo launchctl load /Library/LaunchDaemons/com.example.myjob.plist。

4、检查是否生效:执行launchctl list | grep example,若输出中包含对应Label且PID非“-”,说明已成功加载并运行。

五、调试与日志记录配置

当任务未按预期执行时,需捕获标准输出与错误流,以便定位脚本内部或环境变量问题。

1、在plist的中添加StandardOutPath/var/log/myjob.log,将stdout重定向至指定日志文件。

2、添加StandardErrorPath/var/log/myjob.err,单独捕获stderr内容。

3、若脚本依赖特定shell环境变量(如PATH),应在plist中显式声明:EnvironmentVariablesPATH/usr/local/bin:/usr/bin:/bin。

4、修改plist后,需先unload再reload:执行launchctl unload后再launchctl load,否则变更不会生效。

相关文章

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

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

下载

相关标签:

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

相关专题

更多
string转int
string转int

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

2023.08.02

7499

3

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

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

2024.04.01

5144

5

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

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

2024.08.01

6677

7

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

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

2024.11.28

2642

7

mysql标识符无效错误怎么解决
mysql标识符无效错误怎么解决

mysql标识符无效错误的解决办法:1、检查标识符是否被其他表或数据库使用;2、检查标识符是否包含特殊字符;3、使用引号包裹标识符;4、使用反引号包裹标识符;5、检查MySQL的配置文件等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.12.04

17980

5

Python标识符有哪些
Python标识符有哪些

Python标识符有变量标识符、函数标识符、类标识符、模块标识符、下划线开头的标识符、双下划线开头、双下划线结尾的标识符、整型标识符、浮点型标识符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

1263

5

java标识符合集
java标识符合集

本专题整合了java标识符相关内容,想了解更多详细内容,请阅读下面的文章。

2025.06.11

9630

9

c++标识符介绍
c++标识符介绍

本专题整合了c++标识符相关内容,阅读专题下面的文章了解更多详细内容。

2025.08.07

3842

7

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.03

1938

5

热门下载

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

精品课程

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

共1课时 | 207人学习

PostgreSQL 教程
PostgreSQL 教程

共48课时 | 21万人学习

好课诞生记
好课诞生记

共20课时 | 7.2万人学习