launchctl定时任务
最近做个一个定时任务的golang程序,需要每10分钟运行一次,使用了launchctl,整理了一篇文章方便记忆。
一、plist文件
launchctl是根据plist文件的内容来执行任务的。
plist又根据存放的目录不同而启动的时机不同,如下:
~/Library/LaunchAgents 由用户自己定义的任务项
/Library/LaunchAgents 由管理员为用户定义的任务项
/Library/LaunchDaemons 由管理员定义的守护进程任务项
/System/Library/LaunchAgents 由Mac OS X为用户定义的任务项
/System/Library/LaunchDaemons 由Mac OS X定义的守护进程任务项
以/Library/LaunchAgents
为例,在/Library/LaunchAgents
目录下创建com.demo.plist
文件:
<?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>Program</key><string>/Users/xxx/go/bin/pachong</string> --><!-- 指定要运行的脚本 --><key>ProgramArguments</key><array><string>/Users/xxx/go/bin/pachong</string></array><!-- 指定要运行的时间 --><!-- <key>StartCalendarInterval</key><dict><key>Minute</key><integer>00</integer><key>Hour</key><integer>8</integer><key>Day</key><integer>1</integer></dict> --><!-- 指定要运行的时间 --><key>StartInterval</key><integer>600</integer>
<!-- 标准输出文件 -->
<key>StandardOutPath</key>
<string>/Users/x x x/go/src/pachong/run.log</string>
<!-- 标准错误输出文件,错误日志 -->
<key>StandardErrorPath</key>
<string>/Users/xxx/go/src/pachong/run.err</string>
</dict>
</plist>
- Label: 任务的唯一标识
- ProgramArguments: 命令语句, 第一个
- Program: 要运行的程序, 如果省略该参数,ProgramArguments的第一个数据作为运行程序
- StartInterval: 时间隔间,单位秒
- StartCalendarInterval: 运行的时间,与StartInterval只能使用其中一个
- StandardOutPath: 标准输出文件
- StandardErrorPath: 错误输出文件
启动命令
plist文件编写好之后,先加载plist文件,
launchctl load -w com.demo.plist
-w
会覆盖掉plist文件中无效的部分
删除任务
launchctl unload -w com.demo.plist
开始任务
立即执行任务,即使时间没到
launchctl start com.demo.plist
结束任务
launchctl stop com.demo.plist
工具
推荐一款launchctl边界工具LaunchControl
- 左边可以看到脚本的状态
- 有错误时可以点击修复脚本
- 可视化编辑plist文件
launchctl定时任务相关推荐
- Mac 开启定时任务 crontab
1 定时任务 有时候会遇到这种情况,需要定期执行一下某个脚本文件,此时可以考虑定时任务. 设置定时任务: linux/mac下的定时执行主要是使用crontab文件中加入定制计划来执行,Cron本身是 ...
- mac定时执行python_Mac中的定时任务利器:launchctl
launchctl是一个统一的服务管理框架,可以启动.停止和管理守护进程.应用程序.进程和脚本等. launchctl是通过配置文件来指定执行周期和任务的. 当然mac也可以像linux系统一样,使用 ...
- Mac中的定时任务利器:launchctl
launchctl是一个统一的服务管理框架,可以启动.停止和管理守护进程.应用程序.进程和脚本等. launchctl是通过配置文件来指定执行周期和任务的. 当然mac也可以像linux系统一样,使用 ...
- mac linux 计划任务,Mac上,执行定时任务:launchctl
在Mac上定时执行任务 在Mac上,执行定时任务,有两种方式: 使用launchctl 沿袭Linux常用的crontab命令 毕竟咱是在mac上开发,这里只讲launchctl的用法 1.首先需要编 ...
- launchctl :MAC 下的定时任务
launchctl 是一个统一的服务管理框架,可以启动.停止和管理进程.应用程序.脚本等. launchctl 可以通过 plist 文件来指定执行周期性任务. 查看已存在的任务 ~/Library/ ...
- launchctl在Macbook管理定时任务和守护进程
本文介绍如何使用launchctl定时执行脚本任务以及错误定位. 我的macbook是arm64架构,在执行launchctl遇到start失败的问题,花了几天时间才解决.在此记录一下,供参考. 一. ...
- Mac下使用crontab来实现定时任务
Mac下使用crontab来实现定时任务 说明: 1.Linux和Mac下操作crontab都是一致的 2.配置文件都在/etc/crontab下,如果没有就创建. 3.测试发现直接使用crontab ...
- Mac上crontab与/etc/crontab定时任务
一.crontab用法 1.开启crontab服务 <1>.查看 crontab 是否启动 # sudo launchctl list | grep cron<2>.检查需要的 ...
- launchctl mysql_【数据库】MAC 使用mysqldump 和 launchctl 定时备份Mysql数据库
背景:之前开发的报告整理工具使用的数据库一直没有增加自动备份,每次想起来手动去备份一下,因此想增加一个自动备份数据库的任务. 环境:MAC mysql 整个过程分为两个部分 (1)使用mysqldum ...
最新文章
- ASP.NET 状态管理概述(MSDN)
- Python学习笔记(四)
- python语言介绍-Python语言简介
- SAP 批次管理(Batch management)
- 如何新建分支上传_如何创建git分支?
- 2种IO并发开发中的设计模式:Reactor and Proactor
- 如何:将 TraceSource 和筛选器与跟踪侦听器一起使用(转载)
- 十三、Vuex学习笔记
- 谈一谈Java编程开发中虚拟机的内存区域划分?猿们怎么看?
- linux ssh密钥登录
- 5.WEB版QQ多人聊天,带离线留言功能
- RabbitMQ消息可靠性传输示例
- 外部中断器微型计算机课程设计,课程设计-电子时钟参考.doc
- Java面向对象练习题之定义交通工具类型,控制速度
- 最让IT技术支持人员头痛的10件事
- Excel-制作各国历年GDP动态图
- python xlwt 设置表格的行高方法
- 我国火箭回收历程介绍
- 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置!
- 自动下载必应主页图片做壁纸