This MacBook中的定时任务
借鉴https://www.jianshu.com/p/4addd9b455f2
launchctl
-
类似于centos中的systemct
-
为服务控制命令
-
launchctl对应的*.plist服务文件
-
目录文件
* /Libray/LaunchDaemons -->只要系统启动了,即使不登录也会被执行 * /Library/LaunchAgents -->当用户登录后才会被执行 * ~/Library/LaunchAgents 由用户自己定义的任务项 * /Library/LaunchAgents 由管理员为用户定义的任务项 * /Library/LaunchDaemons 由管理员定义的守护进程任务项 * /System/Library/LaunchAgents 由Mac OS X为用户定义的任务项 * /System/Library/LaunchDaemons 由Mac OS X定义的守护进程任务项
-
创建好plist文件需要先加载:launchctl load -w com.demo.plist
-
其他命令
# 加载任务, -w选项会将plist文件中无效的key覆盖掉,建议加上 $ launchctl load -w com.demo.plist # 删除任务 $ launchctl unload -w com.demo.plist # 查看任务列表, 使用 grep '任务部分名字' 过滤 $ launchctl list | grep 'com.demo' # 开始任务 $ launchctl start com.demo.plist # 结束任务 $ launchctl stop com.demo.plist
-
plist文件
-
如下demo
<?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> <!-- Label唯一的标识 --> <key>Label</key> <string>com.demo.plist</string> <!-- 指定要运行的脚本 --> <key>ProgramArguments</key> <array> <string>/Users/demo/run.sh</string> </array> <!-- 指定要运行的时间 --> <key>StartCalendarInterval</key> <dict> <key>Minute</key> <integer>00</integer> <key>Hour</key> <integer>22</integer> </dict> <!-- 标准输出文件 --> <key>StandardOutPath</key> <string>/Users/demo/run.log</string> <!-- 标准错误输出文件,错误日志 --> <key>StandardErrorPath</key> <string>/Users/demo/run.err</string> </dict> </plist>
- 此处定时任务为22:00每日执行/User/demo/run.sh命令