用到的工具跟之前提到的脚本开机自启一样,都是Launchctl
最新目录‹第一种:第二种:本文标签:chmod 权限 终端 自启 两种方式。 第一种: 新建xxx.sh,填入脚本命令,比如我想开机自启动rtorrent,只需要填入: rtorrent ...
时间:2021/8/24 分类:macOS 人气:1558 评论:0
具体步骤:
进入 /Library/LaunchDaemons 目录下:cd /Library/LaunchDaemons
创建 timing.plist 定时任务描述文件:
sudo vim timing.plist
输入以下内容:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?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.iamwr.launchctl.demo.agent</string> <key>Program</key> <string>/Users/rundouble/Desktop/run.sh</string> <key>ProgramArguments</key> <array> <string>/Users/rundouble/Desktop/run.sh</string> </array> <key>RunAtLoad</key> <true/> <key>StartInterval</key> <integer>30</integer> <key>StandardOutPath</key> <string>/Users/rundouble/Desktop/run.log</string> <key>StandardErrorPath</key> <string>/Users/rundouble/Desktop/run.err</string> </dict> </plist> |
.plist 文件标签说明:
Label:定时任务的名称,这里Label的值是com.iamwr.launchctl.demo.agent,要全局唯一,可通过:launchctl list查看已有的定时任务Program:是要运行的脚本的名称,这里是/Users/rundouble/Desktop/run.shProgramArguments: 脚本运行的参数,第一个是运行的命令,其余是运行需要的参数,这里是/Users/rundouble/Desktop/run.sh,由于运行这个脚本不需要其他参数,所有只有这一个命令RunAtLoad:表示加载定时任务即开始执行脚本StartInterval: 定时任务的周期,单位为秒,这里 30 代表每 30s 执行一次脚本StandardOutPath: 标准输出日志的路径StandardErrorPath: 标准错误输出日志的路径
加载该定时任务:
launchctl load -w com.iamwr.launchctl.demo.agent.plist
-w 参数会将 .plist 文件中无意义的键值过滤掉,建议加上。
这时,定时任务已加载,由于加上了:
|
1 2 |
<key>RunAtLoad</key> <true/> |
所以该定时任务成功加载后就开始执行,可以在 /Users/demo/run.log 看到每 30s 打印当前时间:
如果我们的目标不是每 30 秒执行脚本,而是每天固定时间执行脚本,比如每天晚上 22:00 执行脚本,那么我们需要对 .plist 文件进行如下修改:
删除:
|
1 2 |
<key>StartInterval</key> <integer>30</integer> |
添加:
|
1 2 3 4 5 6 7 |
<key>StartCalendarInterval</key> <dict> <key>Hour</key> <integer>22</integer> <key>Minute</key> <integer>0</integer> </dict> |
StartInterval 标签代表每多少秒执行,StartCalendarInterval 标签代表指定时间点执行,所以这两个标签在同一个 .plist 文件中只能存在一个。StartCalendarInterval 的 key 有:
同样使用 launchctl load -w com.iamwr.launchctl.demo.agent.plist 命令可使新的定时任务运行起来,在每天 22:00 时运行。
关于Launchctl的简单介绍:

马春杰杰





最新评论
站长您好,亚马逊云咨询推广资源,望建立联系,可邮件,谢谢。
换友情链接吗?
看你的站做的挺不错的
恭喜!!太强了,硕博连读啊
雁过留毛,人过留名。
看不懂但大受震撼
每天都在战争,希望2026和平.
ZeroTier 看过多篇帖子,目前群辉、飞牛os、win11 、安卓、ubuntu ≥18.04 顺利通过,这篇相对于简单 实用、特来感谢 🙄