我如何设置为经常运行每一个任务?(How do I set a task to run every

2019-07-03 16:29发布

我怎么有运行每一个剧本,说30分钟呢? 我认为有不同的操作系统不同的方式。 我使用的OS X.

Answer 1:

只要使用的launchd。 这是一个非常强大的武器系统,同时它是Mac OS X的标准发射系统(目前OS X版本甚至不会启动没有它)。 对于那些谁不熟悉launchd (或OS X一般),它就像之间的杂交initcronat ,的SysVinit( init.d ), inetdupstartsystemd 。 借用所有这些项目的概念,但也提供的东西,你可能无法找到其他地方。

每个服务/任务的文件。 该文件的位置取决于问题:“当应该运行此服务?” 和“哪些权限将服务需要什么?”

系统任务去

/Library/LaunchDaemons/

如果他们奔跑,不管是否有用户登录到系统或没有。 他们将与“根”权限启动。

如果如果用户登录,他们将只运行,他们去

/Library/LaunchAgents/

并且将与刚刚登录的用户的权限执行。

如果已登录,他们将只运行,他们去

~/Library/LaunchAgents/

其中〜是你的主目录。 这些任务将与您的权限运行,就像如果你有他们自己通过命令行或通过双击搜索文件开始。

需要注意的是还存在/System/Library/LaunchDaemons/System/Library/LaunchAgents ,但像往常一样,下的一切/System是由OS X.管理您不得将任何文件那里,你不得修改任何文件存在,除非你真的知道自己在做什么。 在系统文件夹乱搞可以使你的系统无法使用(让它进入的地方,甚至会拒绝重新启动的状态)。 这些是苹果放置的目录launchd是让开机时你的系统启动和运行任务,需要自动启动的服务,执行系统维护任务,等等。

每天launchd任务存在的plist格式的文件。 它应该有反向域名符号。 例如,你能说出你的任务

com.example.my-fancy-task.plist

这plist中可以有各种选项和设置。 每写一个手是次优的,你可能想获得免费的工具Lingon创建任务。 过去是免费的这个工具,现在它的成本在App Store 5 $ 10 $作为非App Store的版本(非App Store的版本功能更强大,如果你为它付出已经计划,认真,得到了非应用程序商店版)。 如果有人知道的类似工具是免费或开源的,请给我在注释行,我会比较推荐的是一个(不想在这里做广告商业软件)。

只是作为一个例子,它看起来是这样的

<?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>

该代理将运行shell脚本/usr/local/bin/my-script.sh每隔1800秒(每30分钟)。 您还可以使任务在特定日期运行/次(基本的launchd可以做一切的cron能做到),或者你甚至可以禁用“按需”导致launchd会保持过程持续运行(如果它退出或崩溃,launchd会会立即重新启动) 。 你甚至可以限制一个进程可能多少资源用(如前所说,Lingon显示了一个漂亮的UI界面所有这些设置)。

更新: 虽然OnDemand仍然支持,它已经过时了。 新设置被命名为KeepAlive ,这更有道理。 它可以有一个布尔值,在这种情况下,它是完全相反的OnDemand (其设置为false表现为好像OnDemandtrue和倒过来)。 伟大的新特点是,它也可以有一本字典值,而不是一个布尔之一。 如果它有一个字典值,你有一对夫妇,让您更精细控制在哪些情况下的任务应保持活着额外的选项。 例如,作为该计划终止零退出代码,只要只在磁盘上某个文件/目录是否存在,只有当另一个任务也是活的,或者只有当网络是目前最多它只是不停只要活着。

您也可以手动启用通过命令行/禁用任务:

launchctl <command> <parameter>

命令可以是加载或卸载,加载的plist或再次卸载它,在这种情况下,参数是文件路径。 或命令可以启动或停止,只启动或停止这样的任务,在这种情况下,参数是标签(com.example.my花哨任务)。 其他的命令和选项也同样存在。

请参阅苹果公司的文档的plist格式和的launchctl命令行工具 (请注意,您可以选择在顶部的OS X版本,因为该格式/选项都不同的OS X版本之间会发生变化)



Answer 2:

您可以使用非常方便的plist发生器: http://launched.zerowidth.com/ (无需购买任何东西......)

它会给你一个壳状的衬垫来注册已经推荐的launchd新的预定作业



Answer 3:

MacOSX上,至少有以下选择:

  • 与“运行脚本”行动经常性的iCal报警
  • 的launchd
  • 的cron( LINK1 , LINK2 )

从个人的经验,cron是最可靠的。 当我测试,launchd的有一些错误和怪癖。 iCal闹钟只有当您登录(但可能是你喜欢的东西)上运行。



Answer 4:

正如Mecki指出,launchd会会去用这个方式。 有对所谓的launchd GUI界面Lingon ,你可能想看看,而不是手工编辑该文件的launchd:

Lingon是用于创建用于Mac OS X豹10.5编辑的launchd配置文件的图形用户界面。

[剪断...]

编辑配置文件比以往任何时候在这个版本更容易,它有两种不同的模式。 基本模式,其具有一个非常简单的界面和专家模式,您可以直接添加的所有设置文本或通过菜单将它们插入一应俱全最常用的设置。



Answer 5:

MAC OS具有的Automator工具是相同的窗户, 任务计划的。 而且使用的Automator,你可以安排每天的任务,并以定期日历事件每天运行在指定时间脚本链接的任务。 参考链接运行在Mac OS中每天都在脚本



Answer 6:

对于苹果脚本,我成立了一个特殊的iCal日历,并使用警报器定期运行它们。 对于命令行工具,我用的launchd。



Answer 7:

供参考:虽然我这样做错过的siplicity,cron是在OS X是过去的事情正是在豹看门狗。 由于老虎已launchd的。 所以,如果你正在运行Leopard的cron是不是一种选择。



文章来源: How do I set a task to run every so often?