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 ...
随机推荐
- 关闭R语言载入包时候的警告
options(warn =-1)
- What is systemvolumeinformation? delete it?
System Volume Information完全可以删除 许多人为了自己的电脑上的System Volume Information不知道而苦恼..我再此给大家介绍一下希望能给你点帮助.. Sy ...
- 模拟ajax实现网络爬虫——HtmlUnit
最近在用Jsoup抓取某网站数据,可有些页面是ajax请求动态生成的,去群里问了一下,大神说模拟ajax请求即可.去网上搜索了一下,发现了这篇文章,拿过来先用着试试. 转帖如下: 网上关 ...
- 【Python】Centos + gunicorn+flask 报错ImportError: No module named request
今天用Python去下载图片,用到了 urllib.request,这个是python3的方法.python2 使用的是urllib2 遇到了这么个问题后台报错,ImportError: No mod ...
- Java数组超出范围时如何处理多个异常?
在Java编程中,数组超出范围时如何处理多个异常? 此示例显示如何使用System类的System.err.println()方法处理多个异常方法. package com.yiibai; publi ...
- Java如何显示所有正在运行的线程?
在Java编程中,如何显示所有正在运行的线程? 以下示例演示如何使用getName()方法显示所有正在运行的线程的名称. package com.yiibai; public class Displa ...
- Eclipse的实用插件
Decompiler PyDev ShellEd AnyEdit SonarLint PropertiesEditor System and Desktop Search 其它实用插件等工作中用到了再 ...
- Chrome Adobe Flash Player 因过期而 阻止
百度搜索重装不管用 作者:胡中元链接:https://www.zhihu.com/question/32223811/answer/60456561来源:知乎著作权归作者所有.商业转载请联系作者获得授 ...
- node,npm的安装
1. 在node的官网下载 2.安装node 3. 4.进入项目根目录,安装依赖:```npm install 如:npm install -g cnpm --registry=https://reg ...
- 主调度器schedule
中断处理完毕后,系统有三种执行流向: 1)直 ...