博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OSX定时执行脚本
阅读量:6721 次
发布时间:2019-06-25

本文共 1302 字,大约阅读时间需要 4 分钟。

1、前言

最近需要一个自动化请求一个地址获取信息,我为此制作一个nodejs脚本,命令行里输入:

 

这里的 1000 就是运行的次数,但是不能输入很大的值,否则服务器一直返回error;一个折衷的方法就是每隔半分钟启动一下这个脚本,这就需要在OSX中定时运行程序;

到网上找了一下教程,文章  讲解得不错,使用 crontab 和 launchctl 都可以启动定时任务,推荐使用后者;

2、行动

2.1、编写脚本

要想自动化,必须要有shell脚本,其实也很简单,将下列名字保存成 auto.sh :

 

注意要用绝对路径

然后脚本要改成可执行状态:

 

2.2、方案一:launchctl + plist文件

Step 1: 首先编写 plist 文件

将下列代码保存成 com.cc.jscon.auto.plist :

 
  • label这里就是给这个任务名个名字,这里一般取plist的文件名,这个名字不能和其它的plist重复。
  • auto.sh就是我们要执行的脚本
  • StartInterval里边的参数是说 每25秒 时候执行一下脚本。
  • StandardErrorPath指定了错误文件,这个文件需要自己创建,保证文件的存在;
  • StandardOutPath指定了正常输出的log,同样需要保证文件存在;

Step 2: 执行 launchctl

将plist文件移动到 ~/Library/LaunchAgents 文件夹下,然后 在~/Library/LaunchAgents 路径下执行下列命令:

 

好了这样就能自动化运行了。

还可以使用的命令有:

 
  • 要让任务生效,必须先load命令加载这个plist
  • 如果任务呗修改了,那么必须先unload,然后重新load
  • start可以测试任务,这个是立即执行,不管时间到了没有
  • 执行start和unload前,任务必须先load过,否则报错
  • stop可以停止任务

也可以借助在线工具 生成所需要的文件,这比copy代码要有保障地多,注意在线生成的话,不能指定脚本路径,所以使用 sh -c 命令,点击“生成”按钮之后可以获得plist文件:

 

这个网站还提供了现成的命令将这个文件拷贝到指定目录下,比如:

 

非常方便地将你想要做的事情一步到位了;

注意这里的plist名字是 com.zerowidth.launched.jscon.auto.plist,毕竟是在人家的网站上生成的,所以命名就是用它的了;不用担心,反正最后能正常运行;

2.3、方案二:使用GUI软件

如果觉得上面操作起来比较麻烦,可以使用 软件,使用界面配置定时任务;点击 Browse... 按钮加载脚本:

配置脚本

没错,还是离不开脚本,这次需要使用 AppleScript,不过使用起来比较简单。这里我们将下面的代码保存成脚本即可:

 

这 AppleScript 脚本还是很容易入门的,推荐。

3、总结

这是我第一次使用脚本写定时任务,就总结成此文,方便后续查阅;

MacOS的定时任务虽然麻烦,但也可以工程流程化,尤其可借助在线工具 生成所需要的文件,所以最核心的还是自己的nodejs程序;

参考文章:

转载地址:http://ifnmo.baihongyu.com/

你可能感兴趣的文章
UVA548
查看>>
gitlab的ssh key有2个
查看>>
Linq 中的Select事例
查看>>
dubbo+zookeeper
查看>>
【转】如何理解c和c++的复杂类型声明
查看>>
贪心法经典问题总结
查看>>
使用百分比固定的table大小中td内容自动换行问题
查看>>
如何给系统升级
查看>>
《Red Dog》——流浪、阳光和那些让人缅怀的画面
查看>>
jquey动画效果
查看>>
陶教授,我记不住定理的证明该怎么办?(我看到陶哲轩在博客上与学生一则有意思的互动,就翻译过来了)...
查看>>
计算 $s=1+(1+2)+(1+2+3)+\cdots+(1+2+3+\cdots+n)$
查看>>
《解析几何》吕林根,徐子道第四版 习题 1.4.7,1.4.8,1.4.9
查看>>
ruby Logger日志
查看>>
【应用】浮点数四则运算器 Part3:运算模块的编写
查看>>
puppet使用 apache passsenger 作为前端 (debian)
查看>>
IDA*
查看>>
双机调试和windbg的命令
查看>>
20155229《网络对抗技术》Exp8:Web基础
查看>>
MVC中用js写入的button按钮单击事件失效问题
查看>>