Mac 使用 launchctl 定时运行程序(转载)
在linux下可以用crontab来定时执行任务,在MAC下可以用launchctl来定时执行任务。
我们使用launchctl来做一个定时执行任务的例子。
首先做一个可执行的脚本,脚本名字叫做:AutoMakeLog.sh,脚本的功能就是在/Users/jackin/Downloads/目录下建一个日志文件。
Shell文件/Users/jackin/AutoMakeLog.sh:
cd /Users/jackin/Downloads/
LOG=`date +"%Y-%m-%d %H:%M:%S"`
LOGFILE=`date +"date-log-%Y%m%d.log"`
echo $LOG > $LOGFILE
脚本要改成可执行的权限
chmod AutoMakeLog.sh
然后进入到~/Library/LaunchAgents下建一个plist文件,这个就是糸统执行任务时要使用的文件
文件名叫com.jackin.launchctl.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>
<key>Label</key>
<string>com.jackin.launchctl.plist</string>
<key>ProgramArguments</key>
<array>
<string>/Users/jackin/AutoMakeLog.sh</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Minute</key>
<integer></integer>
<key>Hour</key>
<integer></integer>
</dict>
<key>StandardOutPath</key>
<string>/var/log/AutoMakeLog.log</string>
<key>StandardErrorPath</key>
<string>/var/log/AutoMakeLog.err</string>
</dict>
</plist>
简单的对这里边的内容说明一下,label这里就是给这个任务名个名字,这里一般取plist的文件名,这个名字不能和其它的plist重复。AutoMakeLog.sh就是我们要执行的脚本,StartCalendarInterval里边的参数是说每一天13点4分的时候执行一下脚本。
然后就可以用下面的几个命令进行操作我们做好的任务了。
launchctl load com.jackin.launchctl.plist
launchctl unload com.jackin.launchctl.plist
launchctl start com.jackin.launchctl.plist
launchctl stop com.jackin.launchctl.plist
launchctl list
要加载我们做好的plist文件,就是用上面的第一个命令load然,这个时候糸统就会在每天的13点4分执行我们的脚本。如果想去掉我们的定时任务就可以用unload命令。
如果一个任务今天的13点4分执行过了,然后你改了,com.jackin.launchctl.plist里面的时间,比如说改到14点4分执行,必须unload之后再重新load一下,不然当天不会再执行这个命令。
start可以测试任务,这个是立即执行,不管时间到了没有
stop可以停止任务
深入的再说一下,其实,/Library/LaunchAgents这样的目录在MAC下一般有三个,我们上面说的是当前用户的目录下的,还有两个一个在/Library/LaunchAgents另一个在/System/Library/LaunchAgents/。如果是不管哪一个用户都要定时执行的话,就要放在 /Library/LaunchAgents这个下面 。
launchd.plist 文件的详细说明https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man5/launchd.plist.5.html
Mac 使用 launchctl 定时运行程序(转载)的更多相关文章
- Linux定时运行程序脚本
项目开发中经常需要用将某个脚本定时运行从而避免其运行并不会影响到其他程序.虽说可以在脚本中利用sleep命令来做这一点,Linux自带了crontab命令可以很好的执行这一操作. 比如我们有名为som ...
- Python 爬取1688货源重量,自动发邮件到指定邮箱(qq),设置定时运行程序
1 # -*- coding: utf-8 -*- 2 # @Time : 2020/7/6 13:46 3 # @Author : Chunfang 4 # @Email : 3470959534@ ...
- 创建用户, 使用crontab定时运行程序
# 以创建一个名为openstack的用户为例子 sudo adduser openstack sudo adduser openstack sudo # 把openstack用户加到可以使用cron ...
- Quartz+log4net实现控制台程序定时运行,并且记录日志
c# 控制台程序定时运行,并记录日志. 组件Quartz + log4net Quartz定时运行程序,log4net记录日志. 首先建立控制台程序"QuartzTest" 安装Q ...
- Mac上定时运行脚本工具--launchctl
在Mac上可以像在Linux上一样,使用crontab来定时运行脚本,但苹果并不推荐这个方法.苹果推荐使用Launchctl来完成定时任务. 首先,我们先写一个可执行的脚本,列子为php脚本,名字为t ...
- Windows: 在系统启动时运行程序、定时计划任务、定时关机
lesca今天介绍一些让系统在启动时,而非登录时,加载用户自定义的应用程序或脚本的方法,推荐度从前到后依次递减. 1. Windows任务计划(task scheduler) 用户可以按以下步骤进行操 ...
- 5、清理mac缓存和关闭后台运行程序
一.清理mac 缓存 1.用鼠标点击桌面,然后按快捷键Command+Shift+G前往文件夹 2.输入路径:~/Library/Caches/ 3.清除所有的数据,把所有的Caches文件夹得都行 ...
- 简单理解在Mac OS X上运行ASP.NET程序
运行ASP.NET程序的三要素: 1) CLR(.NET运行时) 2) KRE(ASP.NET运行时) 3) Web服务器 所以在Mac OS X上运行ASP.NET程序,就需要对应这三要素的东西: ...
- Mac/Linux 定时运行命令行
想要开机运行的话可以通过 mac 自带的 Automator 将要运行的命令打包成一个app,用后在用户组的“登录时启动”列表里加上那个app. 但是想要定时运行就不能这么做了,要用上一个叫cront ...
随机推荐
- 客户端Cookie读取操作
function SetCookie(name,value) { //此 cookie 将被保存 30 天(可活动配置) var Days = 30; var exp = new Date(); ex ...
- Javascript动态操作CSS总结
一.使用js操作css属性的写法 1.对于没有中划线的css属性一般直接使用style.属性名即可. 如:obj.style.margin,obj.style.width,obj.style.left ...
- 【转】使用Maven的一些小建议,希望你能喜欢
搭建私有仓库 Maven的仓库是用来存放Maven工程依赖的包的(通常为jar和pom,war包也可以依赖,在一些很复杂的项目中才能用到).仓库分为三种:中央仓库.第三方仓库.本地仓库. 中央仓库 由 ...
- [hadoop读书笔记] 第十五章 sqoop1.4.6小实验 - 将mysq数据导入HBASE
导入命令 sqoop import --connect jdbc:mysql://192.168.200.250:3306/sqoop --table widgets --hbase-create-t ...
- QT:KeepAliveOption的应用
由于用QTcpSocket写网络通讯程序,当正常服务端或者客户端断开的时候,我们监测信号即可:Signals:stateChanged(QAbstractSocket::SocketState).(手 ...
- 工行金邦达USBKey 在Mac OS的 Parallels Desktop 的虚拟Win7出现“ PKCS11
由于经常用到支付宝的工行付款,所以在我的mac os中安装了Parallels Desktop 7(Win7旗舰版),但随之而来的问题是,运行PD后,再插入工行的USBkey,运行工具箱后出现“PKC ...
- Lucene系列一:搜索引擎核心理论
一.为什么需要搜索引擎 问题1:数据库索引的原理是怎样的? 索引原理:对列值创建排序存储,数据结构={列值.行地址}.在有序数据列表中就可以利用二分查找快速找到要查找的行的地址,再根据地址直接取行数据 ...
- e780. 设置JList中的已选项
List selection events are fired when the following methods are used to change the set of selected it ...
- Servlet下载文件迅雷不支持问题真相之一
问题描述 最近在做一个下载文件的Servlet,直接使用浏览器的下载功能,完美支持,结果测试人员使用迅雷下载,就不行了,下载也能成功完成,只是迅雷下载的文件大小是悲催的0KB 真相搜罗 网上有很多帖子 ...
- Spring Cloud 微服务的那点事
什么是微服务 微服务的概念源于2014年3月Martin Fowler所写的一篇文章“Microservices”. 微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调 ...