最近做个一个定时任务的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定时任务相关推荐

  1. Mac 开启定时任务 crontab

    1 定时任务 有时候会遇到这种情况,需要定期执行一下某个脚本文件,此时可以考虑定时任务. 设置定时任务: linux/mac下的定时执行主要是使用crontab文件中加入定制计划来执行,Cron本身是 ...

  2. mac定时执行python_Mac中的定时任务利器:launchctl

    launchctl是一个统一的服务管理框架,可以启动.停止和管理守护进程.应用程序.进程和脚本等. launchctl是通过配置文件来指定执行周期和任务的. 当然mac也可以像linux系统一样,使用 ...

  3. Mac中的定时任务利器:launchctl

    launchctl是一个统一的服务管理框架,可以启动.停止和管理守护进程.应用程序.进程和脚本等. launchctl是通过配置文件来指定执行周期和任务的. 当然mac也可以像linux系统一样,使用 ...

  4. mac linux 计划任务,Mac上,执行定时任务:launchctl

    在Mac上定时执行任务 在Mac上,执行定时任务,有两种方式: 使用launchctl 沿袭Linux常用的crontab命令 毕竟咱是在mac上开发,这里只讲launchctl的用法 1.首先需要编 ...

  5. launchctl :MAC 下的定时任务

    launchctl 是一个统一的服务管理框架,可以启动.停止和管理进程.应用程序.脚本等. launchctl 可以通过 plist 文件来指定执行周期性任务. 查看已存在的任务 ~/Library/ ...

  6. launchctl在Macbook管理定时任务和守护进程

    本文介绍如何使用launchctl定时执行脚本任务以及错误定位. 我的macbook是arm64架构,在执行launchctl遇到start失败的问题,花了几天时间才解决.在此记录一下,供参考. 一. ...

  7. Mac下使用crontab来实现定时任务

    Mac下使用crontab来实现定时任务 说明: 1.Linux和Mac下操作crontab都是一致的 2.配置文件都在/etc/crontab下,如果没有就创建. 3.测试发现直接使用crontab ...

  8. Mac上crontab与/etc/crontab定时任务

    一.crontab用法 1.开启crontab服务 <1>.查看 crontab 是否启动 # sudo launchctl list | grep cron<2>.检查需要的 ...

  9. launchctl mysql_【数据库】MAC 使用mysqldump 和 launchctl 定时备份Mysql数据库

    背景:之前开发的报告整理工具使用的数据库一直没有增加自动备份,每次想起来手动去备份一下,因此想增加一个自动备份数据库的任务. 环境:MAC mysql 整个过程分为两个部分 (1)使用mysqldum ...

最新文章

  1. ASP.NET 状态管理概述(MSDN)
  2. Python学习笔记(四)
  3. python语言介绍-Python语言简介
  4. SAP 批次管理(Batch management)
  5. 如何新建分支上传_如何创建git分支?
  6. 2种IO并发开发中的设计模式:Reactor and Proactor
  7. 如何:将 TraceSource 和筛选器与跟踪侦听器一起使用(转载)
  8. 十三、Vuex学习笔记
  9. 谈一谈Java编程开发中虚拟机的内存区域划分?猿们怎么看?
  10. linux ssh密钥登录
  11. 5.WEB版QQ多人聊天,带离线留言功能
  12. RabbitMQ消息可靠性传输示例
  13. 外部中断器微型计算机课程设计,课程设计-电子时钟参考.doc
  14. Java面向对象练习题之定义交通工具类型,控制速度
  15. 最让IT技术支持人员头痛的10件事
  16. Excel-制作各国历年GDP动态图
  17. python xlwt 设置表格的行高方法
  18. 我国火箭回收历程介绍
  19. 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置!
  20. 自动下载必应主页图片做壁纸

热门文章

  1. 算法题第10题-----唯一摩尔斯密码词,难度(中等)
  2. 算法——验证IP地址合法性
  3. EasyExcel动态导出多级表头
  4. mysql alter user语法_mysql 常用命令语法
  5. 浮动的概念作用特点产生浮动的原因和清除浮动的方法
  6. OpenGL-离屏渲染
  7. php写动物的属性,写动物作文技巧与方法
  8. linux命令解释pwd,Linux中pwd命令有什么用
  9. Graphviz的使用指南
  10. H5和CSS3新特性总结