在linux下可以用crontab来定时执行任务,在mac下可以用launchctl来定时执行任务
我们使用launchctl来做一个定时执行任务的例子
首先做一个可执行的脚本,脚本名字叫做:
run123.sh,脚本的功能就是在/Users/alecyan/Downloads/目录下建一个文件,脚本要改成可执行的权限
chmod 777 run123.sh
脚本代码如下:
cd /Users/alecyan/Downloads/
touch abcabc123.txt
然后进入到~/Library/LaunchAgents下建一个plist文件,这个就是糸统执行任务时要使用的文件
文件名叫com.alecyan.testcron.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.alecyan.testcron</string>
<key>ProgramArguments</key>
<array>
<string>/Users/alecyan/Downloads/run123.sh</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Minute</key>
<integer>4</integer>
<key>Hour</key>
<integer>13</integer>
</dict>
<key>StandardOutPath</key>
<string>/Users/alecyan/Downloads/abc.log</string>
<key>StandardErrorPath</key>
<string>/Users/alecyan/Downloads/abcerror.log</string>
</dict>
</plist>
简单的对这里边的内容说明一下,label这里就是给这个任务名个名字,这里一般取plist的文件名,这个名字不能和其它的plist重复。run123.sh就是我们要执行的脚本,StartCalendarInterval里边的参数是说每一天13点4分的时候执行一下脚本
然后就可以用下面的几个命令进行操作我们做好的任务了
launchctl load com.alecyan.testcron.plist
launchctl unload com.alecyan.testcron.plist
launchctl start com.alecyan.testcron.plist
launchctl stop com.alecyan.testcron.plist
launchctl list
要加载我们做好的plist文件,就是用上面的第一个命令load然,这个时候糸统就会在每天的13点4分执行我们的脚本
如果想去掉我们的定时任务就可以用unload命令
如果一个任务今天的13点4分执行过了,然后你改了,com.alecyan.testcron.plist里面的时间,比如说改到14点4分执行,必须unload之后再重新load一下,不然当天不会再执行这个命令
start可以测试任务,这个是立即执行,不管时间到了没有
stop可以停止任务
ok一个简单的定时任务就可以用了
深入的再说一下,其实,/Library/LaunchAgents这样的目录在mac下一般有三个,我们上面说的是当前用户的目录下的,还有两个一个在/Library/LaunchAgents另一个在/System/Library/LaunchAgents/ 如果是不管哪一个用户都要定时执行的话,就要放在
/Library/LaunchAgents这个下面
参考博客:
http://blog.jeffean.net/blog/2010/08/30/mac-os-shi-yong-launchd-kong-zhi-daemon/
http://blog.hebine.com/archives/tag/launchd
http://nathangrigg.net/2012/07/schedule-jobs-using-launchd/
http://www.zhoumingzhi.com/2013/04/05/macos%E7%9A%84launchd%E4%BD%BF%E7%94%A8/
https://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man5/launchd.plist.5.html这里是plist里的参数的具体说明
分享到:
相关推荐
使用macOS的launchctl守护程序管理器管理后台服务。 要求 用于安装服务。 这在Linux上不能(也不能)与Homebrew一起使用(请不要提交Linux问题)。 安装 首次运行时会自动安装brew services 。 用法 请参阅或“ ...
Mac OS 的守护进程启动管理休斯顿是流行的 Go计划的一个港口。用法有关完整的使用指南,请参阅文档。支持的命令其中“支持”表示带有或不带有任何类型的用户错误处理的基本支持。 ls [-l] [模式] 显示 [图案] 编辑 ...
手册内容为「如何让一部全新的 MacBook 快速完成开发环境配置」,主要面向 Web 开发者。其中的指导,在 Mavericks 和 Yosemite 上有效,其他版本系统并未尝试。 如果你是一名老手,本手册让你减少配置开发环境的...
lunchy一个友好的launchctl包装
使用brew install mongo并按照启动选项的说明进行操作MongoDB OSX Snow Leopard Launchctl 项目配置 MongoDB 在 Mac OSX 系统启动时启动。蒙戈安装本指南假设您已经使用 MacPorts 安装了 mongo,如下所示: sudo ...
因为lunchy 不能同时启动/停止/重启多个LaunchAgents,你需要运行多个命令来实现这一点。 (来自午餐描述)你不讨厌 OSX 的 launchctl 吗? 你必须给它确切的文件名。 与 Linux 漂亮、简单的 init 系统和过于冗长...
节点启动控制 为 launchctl 命令提供本机绑定 注意 由于 OS X 10.10 的...警告:这将安装 n 并更改您的节点版本,因此请谨慎使用 $ npm run test-versions 应用程序接口 去做 使API更完整 贡献 请随意分叉/贡献:]
首次连接Yubikey时, launchctl将运行yubikeylockd守护程序,该守护程序将仅监视Yubikey USB设备的状态。 守护程序基于Apple为IOKit开发提供的示例。 它有两件事: 连接设备后,它将通过...
使用 sublime text 打开文件夹,将 my_username、my_password 批量替换成自己的 cd /etc/postfix && sudo postmap sasl_passwd generic sd_relayhost sender_...你的Mac mail命令就可以使用126的smtp发送邮件了
午餐 Launchctl的友好包装器。... 如果您不使用唯一模式,Lunchy会警告您这一点,并为您提供匹配项的列表。 所以代替: launchctl load ~/Library/LaunchAgents/io.redis.redis-server.plist 你可以这样做: lunchy
这些是一些简单的示例,说明如何使用RethinkDB作为数据库运行ShareJS。 这些示例取决于而不是默认的 。 设置和运行 1.安装Node.js 苹果电脑 如果您尚未安装Node.js,并且使用的是Mac,请使用brew安装它。 brew ...
它提供了launchctl命令行实用程序的大多数功能,包括创建,编辑,删除或调试启动服务所需的一切,甚至包括日志查看器,因此您无需启动Console.app并构建自定义查询。 有时需要快速加载,卸载,启动或停止按需的作业...
$ sudo launchctl stop org.postfix.master && sudo launchctl start org.postfix.master ``` 就可以使用 smtp 发送邮件了: ``` $ echo "`hostname -s` test time:`date "+%Y-%m-%d %H:%M:%S"`" | mail -s "test ...
CrashPlan Switch 是一个仅限 Mac 的应用程序,它可以打开或关闭 CrashPlan 的后台进程。 只需运行该应用程序,它就会检测 CrashPlan 进程是否正在运行。 如果是这样,该过程将停止并保持关闭状态,直到您再次运行 ...
Ruby-Launchd-使用Ruby控制Mac OS X服务Ruby-Launchd就像launchctl(或著名的午餐)一样。 它使您可以使用Ruby在Mac OS X上轻松创建,启动和停止服务。安装将此行添加到您的应用程序的Gemfile中: gem 'launchd' ...
go.sh驱动程序脚本提供了用于安装launchctl定期执行的逻辑。 先决条件 该脚本假定笔记本电脑中存在以下内容: 最近的Ruby解释器。 osx附带的默认值就足够了; ; 除非您摆脱以下依赖性,否则请进行; 与brew ...
安装Elasticsearch 确保已安装的Mac(如果您恰巧使用Windows计算机,则应该出去购买Mac) 在brew上安装elasticsearch$ brew install elasticsearch && brew info elasticsearch 开始弹性搜索$ ln -sfv /usr/local/...
launchrocket 是 Mac 管理 Homebrew 安装服务的选择面板。 功能: 绿色/黄色/红色 状态指示器 绿色 -正在运行 launchctl 报告进程 黄色 - LaunchRocket 正在执行或者等待 开始/关闭 命令 红色 - launchctl ...
从~/.bash_profile此脚本(由于使用launchctl getenv来获取$SSH_AUTH_SOCK的默认值,因此目前仅适用于 Mac)。 这会将您的$SSH_AUTH_SOCK设置为~/.ssh_auth_sock ,然后从~/.ssh_auth_sock创建一个符号链接到您的...
发射 macOS .plist文件的集合,以自动执行后台任务 这些文件可以放置在三个位置之一,结果如下: 地点 加载时 为了谁 所有权 ... 加载后,它将尝试每5分钟运行一次,直到成功,然后再每6小时运行一次。