我该如何设定任务的运行每一个经常?
-
02-07-2019 - |
题
怎么做我有一个脚本每,说30分钟?我假定有不同的方式用于不同的开放源码软件。我使用的OS X.
解决方案
只需使用 launchd 即可。它是一个非常强大的启动器系统,同时它是Mac OS X的标准启动器系统(如果没有它,当前的OS X版本甚至都不启动)。对于那些不熟悉 launchd
(或者通常使用OS X)的人来说,它就像是 init
, cron
, at
,SysVinit( init.d
), inetd
, upstart
和 systemd
。借用所有这些项目的概念,同时提供您在其他地方找不到的东西。
每个服务/任务都是一个文件。文件的位置取决于以下问题:“此服务何时应该运行?”和“服务需要哪些权限?”
系统任务转到
/Library/LaunchDaemons/
如果他们应该运行,无论是否有用户登录到系统。它们将以“root”开头。特权。
如果他们只在任何用户登录时才会运行,他们会转到
/Library/LaunchAgents/
将使用刚刚登录的用户的权限执行。
如果只有你登录时才会运行,他们会转到
~/Library/LaunchAgents/
其中〜是您的HOME目录。这些任务将以您的权限运行,就像您通过命令行自己启动它们或双击Finder中的文件一样。
请注意,还存在 / System / Library / LaunchDaemons
和 / System / Library / LaunchAgents
,但像往常一样, / System
由OS X管理。你不应该在那里放置任何文件,你不应该在那里更改任何文件,除非你真的知道你在做什么。在Systems文件夹中乱搞可能会使您的系统无法使用(使其进入甚至拒绝再次启动的状态)。这些是Apple放置 launchd
任务的目录,这些任务可以在启动期间启动并运行系统,根据需要自动启动服务,执行系统维护任务等。
每个 launchd
任务都有一个plist格式的文件。它应该具有反向域名表示法。例如。你可以命名你的任务
com.example.my-fancy-task.plist
此plist可以有各种选项和设置。每手写一个是不理想的,您可能希望获得免费工具 Lingon 来创建您的任务。这个工具过去是免费的,现在它在应用程序商店中的价格是5美元,而非应用程序商店版本的价格是10美元(非应用程序商店版本功能更强大,如果你已经计划付费,那么,请认真购买非应用程序商店版)。如果有人知道一个类似的免费软件或开源工具,请在评论中写一行,我宁愿推荐一个(不想在这里做商业软件广告)。
就像一个例子,它可能看起来像这样
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.example.my-fancy-task</string>
<key>OnDemand</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/bin/sh</string>
<string>/usr/local/bin/my-script.sh</string>
</array>
<key>StartInterval</key>
<integer>1800</integer>
</dict>
</plist>
此代理将每1800秒(每30分钟)运行一次shell脚本/usr/local/bin/my-script.sh。您还可以在某些日期/时间运行任务(基本上启动可以执行cron可以执行的所有操作),或者您甚至可以禁用“OnDemand”。导致launchd保持进程永久运行(如果它退出或崩溃,launchd将立即重新启动它)。您甚至可以限制进程可以使用的资源量(如前所述,Lingon在一个漂亮的UI界面中显示所有这些设置)。
更新: 即使仍支持 OnDemand
,也不推荐使用它。新设置名为 KeepAlive
,这更有意义。它可以有一个布尔值,在这种情况下它与 OnDemand
完全相反(将它设置为 false
就好像 OnDemand
是 true
,反之亦然)。伟大的新功能是,它也可以有一个字典值而不是布尔值。如果它有字典va
其他提示
你可以使用非常方便的plist发生器: http://launched.zerowidth.com/ (无需购买任何东西&# 8230;)
它会给你一个shell one-liner来注册一个新的预定作业与已推荐的 launchd
正如Mecki所指出的那样,启动将会是这样的。有一个名为 Lingon 的launchd的GUI界面,你可能想要查看,而不是编辑手动启动文件:
Lingon是一个用于创建编辑launchd的图形用户界面 Mac OS X Leopard 10.5的配置文件。
[剪断...]
在此版本中,编辑配置文件比以往更容易 它有两种不同的模式。基本模式最常见 在非常简单的界面和专家模式下可以轻松获得设置 您可以在其中直接在文本或插入中添加所有设置 他们通过菜单。
MAC OS有一个 Automator 工具,与Windows中的任务计划程序相同。使用Automator,您可以每天安排任务,并将任务与重复日历事件相关联,以便每天在指定时间运行脚本。参考链接在Mac OS中每天运行脚本
对于Apple脚本,我设置了一个特殊的iCal日历,并使用警报定期运行它们。对于命令行工具,我使用launchd。
仅供参考:虽然我这样做是错过了它的siplicity,cron在OS X上已经成为过去。它是黑豹的看门狗。自虎以来它已经推出。因此,如果你正在运行Leopard cron不是一个选择。