我需要一个能够根据计划/配置启动一组进程的程序;该程序将在后台运行并重新启动进程,以防它们崩溃。
在 windows 和 unix 上都有用于此类任务的标准工具——我需要的是一个跨平台程序,它可以使用相同的配置在不同的操作系统上运行。
任何实现基本功能(即创建进程、通知进程终止事件等)的可移植 C/C++ 库也可以。
我需要一个能够根据计划/配置启动一组进程的程序;该程序将在后台运行并重新启动进程,以防它们崩溃。
在 windows 和 unix 上都有用于此类任务的标准工具——我需要的是一个跨平台程序,它可以使用相同的配置在不同的操作系统上运行。
任何实现基本功能(即创建进程、通知进程终止事件等)的可移植 C/C++ 库也可以。
你可能不得不自己写。它有很多令人讨厌的可移植性黑客,没有(真正的)光荣目的......即完成可以通过其他方式完成的事情的大量工作。
在 *nix、*bsd 和 MacOS 上运行一些东西不会太难。制作/生成解析器来处理某种简单的基于规则的配置文件不会太难。将最终的 Windows 香料添加到混合中将是一个皇家痛苦。然后你去学习一些新的基于 Python 的构建配置系统,因为不是每个 Windows 用户都有 cygwin 和 shell ......然后你去寻找帮助你发现错误的人。
几百小时后,你会开始怀疑它是否真的值得写。在 2 - 3 小时内,您可以让 cygwin、ssh 和一些方便的 shell 脚本完成这项工作。
据说大多数真正有用的程序都是程序员挠痒痒的直接结果。所以..如果这是你真正需要并且有时间去做的事情,我会说去做。当然,它会变得相当受欢迎。除此之外,出于上述原因,我怀疑这样的程序在相当长的一段时间内仍将是不成文的。
如果您愿意完全以 Unix 为中心,Cygwin 附带了一个可以在 Windows 上作为服务运行的cron版本。然后,您可以跨平台使用通用crontab
文件。请参阅http://www.noah.org/ssh/cygwin-crond.html。
在所有这些平台上安装ssh 服务器并通过每个平台自己的命令行工具处理进程的启动/停止怎么样?
为了能够在没有提示身份验证的情况下访问,我将使用没有密码的非对称密钥身份验证,因此可以立即从控制机器访问所有托管主机。
所以我的解决方案将是一个自制的,由一堆脚本(.bat 或 .sh 或您想要的任何脚本语言)和几个 ssh 服务器组成。
Golang 中的 cron 实现怎么样?
https://godoc.org/github.com/robfig/cron
它是跨平台的,并在您需要时发出您的命令。它作为一个小的可执行文件分发。不需要依赖。它允许您添加 crons,但有趣的是,remove 不是内置的。
supervisord是一个用户空间进程管理器,用 python 编写,适用于unix和windows
supervisord 与 launchd、daemontools 和 runit 等程序有一些相同的目标。与其中一些程序不同,它并不意味着作为“进程 id 1”的 init 的替代品运行。相反,它旨在用于控制与项目或客户相关的流程,并且旨在在启动时像任何其他程序一样启动。
相关:在 windows 上的 cygwin 上运行 supervisord-unix( windows 版本的 supervisor可能不需要)