【发布时间】:2011-04-08 18:29:24
【问题描述】:
你好电脑同胞:)
我有一个 shell 脚本,我将用作看门狗计时器。它检查我的其他“主”程序是否正在运行。如果不是,它会重新启动它。
问题是:如何在 Mac 上安装它?是否存在操作系统将自动并定期调用脚本的文件夹/plist 文件场景,以确保我的程序在不运行的情况下永远不会运行那么长时间?理想情况下,我希望每分钟测试一次,但每小时甚至每天几次都令人满意。
谢谢!
【问题讨论】:
你好电脑同胞:)
我有一个 shell 脚本,我将用作看门狗计时器。它检查我的其他“主”程序是否正在运行。如果不是,它会重新启动它。
问题是:如何在 Mac 上安装它?是否存在操作系统将自动并定期调用脚本的文件夹/plist 文件场景,以确保我的程序在不运行的情况下永远不会运行那么长时间?理想情况下,我希望每分钟测试一次,但每小时甚至每天几次都令人满意。
谢谢!
【问题讨论】:
我不是 Mac 用户,但应该有 cron 守护进程。 http://hints.macworld.com/article.php?story=2001020700163714
【讨论】:
【讨论】:
在 Mac OS X 上执行此操作的方法是使用启动服务。它取代了旧的系统服务,例如init 和crontab,并为管理系统服务提供了一个单一、统一的框架。
在您的情况下,您可能不需要单独的脚本 - 保持应用实例运行应该由系统处理。首先,您需要创建描述您的守护进程/脚本/应用程序的.plist 文件。您可以将其放置在以下位置之一,具体取决于服务类型:
~/Library/LaunchAgents:用户提供的每用户代理。/Library/LaunchAgents:管理员提供的每用户代理。/Library/LaunchDaemons:管理员提供的系统范围的守护进程。/System/Library/LaunchAgents:Mac OS X 每用户代理。/System/Library/LaunchDaemons:Mac OS X 系统范围的守护进程。一旦定义了服务,就可以使用launchctl 命令来控制launchd。例如,您可以列出正在运行的服务、启动/停止服务等。
完整的文档在这里:
【讨论】: