Служба монитора процессов в Windows
Мне нужно что-то, что работает в фоновом режиме как служба (Windows), наблюдает за определенным процессом, и когда он пересекает пороги, он перезапускает / останавливает / запускает процесс снова? (похожая функциональность rubygem называется " бог")
У меня есть программное обеспечение сетевой камеры, которое работает как сервер, но не поддерживает работу в качестве службы Windows. Он также перестает отвечать один раз в день. Когда это происходит, я вижу, что объем памяти падает ниже 10 МБ. Обычно это около 20-30 МБ в оперативной памяти.
1 ответ
Если вы знакомы с C#, вы можете попробовать использовать фоновый рабочий для мониторинга процесса и перезапустить его, когда у вас возникнут проблемы.
Например, что-то похожее у меня (для приложения с графическим интерфейсом) выглядит следующим образом
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.");
}
}
}