Mac中的定时任务利器:launchctl加载
来源:简书 发布时间:2020-05-22 09:42:25

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的命令

undefined

#!/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

undefined

 

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

这样任务就加载成功了。

更多的命令:

undefined

# 加载任务, -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:

undefined

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 作为后缀,会打不开里面的信息。

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

作者:繁著

 

标签: launchctl

猜你喜欢

撤回卖出基金还有当日收益吗 规则是怎样的?

基金撤回卖出是指其卖出单没有成功交易,这样的情况在基金交易中是非常普遍的,一般撤回卖出主要是...更多

2021-11-30 15:10:43

支付宝买基金的高收益技巧有哪些?

如今,很多人投资者买基金都会通过一些代销平台买入,比如说支付宝,因为这种申购方式不仅简单方便...更多

2021-11-30 15:10:43

信用卡预借现金怎么取不出来 原因一般有哪些?

随着经济的发展,如今办理使用信用卡的用户也越来越多,而且不少卡友在急用钱的时候都会申请信用卡...更多

2021-11-30 15:10:43

北交所主题基金经理是谁 首批基金公司表现怎么样

近日,关于首批北交所主题基金发行,各大基金公司都非常重视,并纷纷派出了该领域王牌基金经理执掌...更多

2021-11-30 15:10:44

中邮消费金融如何开具结清证明 具体操作流程包含

如果我们在申请银行贷款产品,比如房贷、车贷的时候,如果征信报告上显示有未归还的贷款,为了减轻...更多

2021-11-30 15:10:44

沃格光电(603773.SH)宣布消息:拟斥2.04亿元收购

沃格光电(603773 SH)宣布,公司拟以现金2 04亿元收购河南景昂企业管理合伙企业(有限合伙)持有的北...更多

2021-05-08 13:31:55

银保监会:房地产金融化泡沫化势头得到遏制 市场

3月2日,中国人民银行党委书记、银保监会主席郭树清在国新办发布会上表示,我国金融领域防范化解金...更多

2021-03-03 17:48:43

Win10电脑搜索功能不能用怎么办?解决办法是什么?

最近有Win10用户反映,使用电脑搜索功能进行搜索程序的时候,发现电脑搜索功能不能用,这让用户非常...更多

2021-01-15 17:53:08

Win7系统USB鼠标无法识别的解决方法是什么?

现在很多人都有使用无线鼠标了,这样用起来也比较方便。我们常见的鼠标有两种,一种是PS2接口的鼠标...更多

2020-12-30 16:01:50

Win7任务管理器被停用如何解决?具体操作方法是什

最近有Win7用户反映,打开任务管理器的时候,出现提示任务管理器被停用,导致任务管理器无法正常打...更多

2020-12-24 15:10:56