我需要在后台以服务形式运行的东西(Windows),监视定义的进程,当它超过阈值时,它会重新启动/停止/再次启动该进程?(类似 rubygem 的功能称为“上帝“)
我有一个作为服务器运行的网络摄像头软件,但它不支持作为 Windows 服务运行。它每天还会停止响应一次。当它停止响应时,我可以看到内存下降到 10MB 以下。通常内存约为 20-30MB。
答案1
如果您熟悉 C#,您可以尝试使用后台工作程序来监视该过程并在遇到问题时重新启动它。
例如我有类似的东西(对于 GUI 应用程序)如下所示
private void startServer()
{
if (this.CancellationPending == true)
{
Console.WriteLine("Termination of {0} requested", thisServer.serverSettings.serverName);
this.ReportProgress(100);
this.Dispose(true);
}
else
{
try
{
thisServer.serverStatus = status.Starting;
using (Process p = Process.Start(thisServer.serverStartInfo))
{
thisServer.serverProc = p;
p.WaitForInputIdle(thisServer.serverSettings.startupDuration.Milliseconds);
thisServer.serverStatus = status.Running;
while (p.Responding)
{
// happy days
}
thisServer.serverStatus = status.Unknown;
try
{
p.Close();
thisServer.serverStatus = status.Offline;
}
catch
{
try
{
p.Kill();
thisServer.serverStatus = status.Offline;
}
catch { }
}
}
reRun();
}
catch
{
thisServer.serverStatus = status.Offline;
ReportProgress(100, "Error encountered when attempting to launch executable. Please review server settings.");
}
}
}