怎么做我有一个脚本每,说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

在MacOSX,你至少具有以下选择:

从个人的经验,cron是最可靠的。当我进行测试,launchd有一些错误和怪癖。iCal警报只运行时记录在(但是,这可能有些东西你更喜欢).

正如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不是一个选择。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top