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 ...
随机推荐
- linux安装android sdk
https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip 1,先安装java https://developer.and ...
- php 二维数组打乱顺序
public function shuffle_assoc($list) { if (!is_array($list)) return $list; $keys = array_keys($list) ...
- Python 字符串操作函数一
#-*- coding:utf-8 -*- strword = "i will fly with you , fly on the sky ." #find print(strwo ...
- SAP 以工序为基准进行发料 机加工行业 Goods Issue to Routing
SAP 以工序为基准进行发料 这个流程是在业务有关需求,业务需要按照工序发料,一个工单有多个工序,而料是要发到每个工序上,而且没到工序之间在物理上是有距离的,所以仓管员在打印配发单之后希望了解到哪 ...
- Spring Boot使用Servlet、Filter或Listener的方式
根据官方文档说明,有两种方式可以在你的Spring Boot应用中使用Servlet.Filter或Listener. 其一:将Servlet.Filter或Listener注册成Spring Bea ...
- 多媒体开发之rtmp---rtmp client 编译
静态库连接编译问题: assert 原来在c编译器下没定义 ceill 没连接没加 -lm http://blog.chinaunix.net/uid-20681545-id-3786786.html ...
- 【ZooKeeper Notes】系列文章
[ZooKeeper Notes]系列文章 https://my.oschina.net/xiaotian120/blog/194401
- mysql字段类型对应javabean属性
来吧 我们一起看下图,就能明白了.
- ant学习笔记-taskdef
1.声明task jar包中指定的task <taskdef name="xmltask“ classname="com.oopsconsultancy.xmltask.an ...
- 如何在 Ubuntu 16.04,15.10,14.04 中安装 GIMP 2.8.16(类似于PS软件)
GIMP 图像编辑器 2.8.16 版本在其20岁生日时发布了.下面是如何安装或升级 GIMP 在 Ubuntu 16.04, Ubuntu 15.10, Ubuntu 14.04, Ubuntu 1 ...