launchctl是一个统一的服务管理框架,可以启动、停止和管理守护进程、应用程序、进程和脚本等。

launchctl是通过配置文件来指定执行周期和任务的。

当然mac也可以像linux系统一样,使用crontab命令来添加定时任务,这里就不赘述,具体可参见:OS X 添加定时任务

下面将手把手教你在mac上创建定时任务。(任务目标:每天晚上十点定时执行/Users/demo/helloworld.py的python程序)

1. 创建run.sh脚本

进入 helloworld.py程序所在目录

cd /User/demo

创建run.sh脚本

vi run.sh

添加执行helloworld.py的命令

#!/bin/sh

# 记录一下开始时间

echo `date` >> /Users/demo/log &&

# 进入helloworld.py程序所在目录

cd /Users/demo &&

# 执行python脚本(注意前面要指定python运行环境/usr/bin/python,根据自己的情况改变)

/usr/bin/python helloworld.py

# 运行完成

echo 'finish' >> /Users/demo/log

:wq保存退出

注意,脚本要改成可执行的权限

chmod 777 run.sh

2. 编写plist文件

launchctl 将根据plist文件的信息来启动任务。

plist脚本一般存放在以下目录:

/Library/LaunchDaemons -->只要系统启动了,哪怕用户不登陆系统也会被执行

/Library/LaunchAgents -->当用户登陆系统后才会被执行

更多的plist存放目录:

~/Library/LaunchAgents 由用户自己定义的任务项

/Library/LaunchAgents 由管理员为用户定义的任务项

/Library/LaunchDaemons 由管理员定义的守护进程任务项

/System/Library/LaunchAgents 由Mac OS X为用户定义的任务项

/System/Library/LaunchDaemons 由Mac OS X定义的守护进程任务项

进入~/Library/LaunchAgents,创建一个plist文件com.demo.plist

Label

com.demo.plist

ProgramArguments

/Users/demo/run.sh

StartCalendarInterval

Minute

00

Hour

22

StandardOutPath

/Users/demo/run.log

StandardErrorPath

/Users/demo/run.err

3. 加载命令

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

如果任务呗修改了,那么必须先unload,然后重新load

start可以测试任务,这个是立即执行,不管时间到了没有

执行start和unload前,任务必须先load过,否则报错

stop可以停止任务

番外篇

plist支持两种方式配置执行时间:

StartInterval: 指定脚本每间隔多长时间(单位:秒)执行一次;

StartCalendarInterval: 可以指定脚本在多少分钟、小时、天、星期几、月时间上执行,类似如crontab的中的设置,包含下面的 key:

Minute

The minute on which this job will be run.

Hour

The hour on which this job will be run.

Day

The day on which this job will be run.

Weekday

The weekday on which this job will be run (0 and 7 are Sunday).

Month

The month on which this job will be run.

plist部分参数说明:

Label:对应的需要保证全局唯一性;

Program:要运行的程序;

ProgramArguments:命令语句

StartCalendarInterval:运行的时间,单个时间点使用dict,多个时间点使用 array

StartInterval:时间间隔,与StartCalendarInterval使用其一,单位为秒

StandardInPath、StandardOutPath、StandardErrorPath:标准的输入输出错误文件,这里建议不要使用 .log 作为后缀,会打不开里面的信息。

定时启动任务时,如果涉及到网络,但是电脑处于睡眠状态,是执行不了的,这个时候,可以定时的启动屏幕就好了。

更多的参数参见:mac官方文档

参考:

mac定时执行python_Mac中的定时任务利器:launchctl相关推荐

  1. mac定时执行python_Mac 使用 launchctl 定时运行程序

    在linux下可以用crontab来定时执行任务,在MAC下可以用launchctl来定时执行任务. 我们使用launchctl来做一个定时执行任务的例子. 首先做一个可执行的脚本,脚本名字叫做:Au ...

  2. mac定时执行python_mac下定时执行python程序(附不执行解决方案).md

    需要用到:定时任务crontab和vi编辑器以及finder获取文件的路径 finder显示完整路径,后面用到 image.png 如图的设置,在命令行输入下面的代码: defaults write ...

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

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

  4. mac定时执行python_Python脚本实现在Mac上DIY定时提醒功能

    背景:这两天一直沉迷于在电脑上看书,每到12点该吃饭时就会忘了,同事还要到工位上叫我,于是就想搞出来一个每天能够定时提醒我该做什么事情的功能,这样能够有提前准备.今天下午花了半天的时间研究了一下,最终 ...

  5. mysql事件不定时执行_Mysql 中的事件//定时任务

    什么是事件 一组SQL集,用来执行定时任务,跟触发器很像,都是被动执行的,事件是因为时间到了触发执行,而触发器是因为某件事件(增删改)触发执行: 开启事件 查看是否开启: show variables ...

  6. java实现每天定时执行任务,Spring Task定时任务每天零点执行一次的操作

    最近根据项目的需求,需要限制用户每天的发送短信数量.这样以来就需要写一个定时任务,每天去置零一次所有用户的发送短信统计数量. 首先,在application.xml文件中添加 接着就是编写自己的业务处 ...

  7. mac如何定时执行任务

    #Mac终端终端直接执行py文件,不需要python命令,怎么处理?? chmod 775 a.py 或者在脚本中添加[ #!和你本地的python地址] #文件更改权限怎么处理 ls -la查看权限 ...

  8. 批处理定时执行任务_[Abaqus tips ] 分析任务的定时执行

    Abaqus分析计划任务的批处理执行,基于windows的批处理文件的实现和基于python脚本的实现,大家应该都很熟悉了,通过事先编译好的脚本文件来批处理计划任务,简单示例如下: windows 批 ...

  9. 防止电脑休眠锁屏、防止休眠锁定、防止电脑休眠的小工具 —— 定时执行专家

    目录 ◆ 定时执行专家 - 防锁屏设置方法 ◆ 定时执行专家 - 介绍 ▼定时执行专家 - 最新版下载 ▼支持23种任务类型 ▼支持12种触发方式 ▼关键字/Keyword 电脑设置了待机或者睡眠模式 ...

最新文章

  1. shell脚本api接口考虑并发问题的可行性操作
  2. linux7内核优化,centos7 系统内核、网络等优化(适用高并发)
  3. 【学习笔记】【C语言】返回指针的函数
  4. SAP CRM IBASE对应的搜索实现,动态SQL语句的拼装
  5. wemosD1_WIFI模块 与 arduino
  6. iOS中加载Flutter中的图片
  7. 华三交换机配置多个镜像口_H3C交换机端口镜像配置的方法
  8. LVM详解;Linux逻辑卷管理
  9. c++多线程在异常环境下的等待
  10. SketchUp Pro 2019 for Mac(草图大师)
  11. 夏普红外测距模块使用笔记
  12. 【应用统计学】简单随机抽样的区间估计和样本容量的确定
  13. 开源跨平台2D游戏引擎Love2D介绍
  14. 如何把pdf转换成word文档?
  15. A LEARNED REPRESENTATION FOR ARTISTIC STYLE
  16. 破解百度云限速下载教程
  17. OperationException: CLIENT: CLIENT_ERROR cannot increment or decrement non-numeric value
  18. 山东田野稻花香 国稻种芯·中国水稻节:威海荣成引种的旱稻
  19. php删除头尾空,分享php中去除头尾空格的2种方法
  20. 【CSS】492- 无外链的CSS开发策略

热门文章

  1. 栈顶指针和队尾指针指向当前位置和指向下一个位置的区别?——轻松搞懂栈和队列指针的指向问题
  2. 门禁系统布线的十点注意事项
  3. 门禁系统远程无线联网解决方案
  4. 滤波器和均衡器有什么区别_什么是均衡器,它如何工作?
  5. 嵌入式100题(81):波特率是什么,为什么双方波特率要相同,高低波特率有什么区别;...
  6. Spark架构原理和生态系统
  7. SVG进阶-SMIL动画
  8. 1210: OY问题 [搜索]
  9. 《西西弗神话》读后感
  10. MSP430 5xx/6xx 定时器A增计数模式编程实例