0

我想监控 linux 中的几个服务。万一他们倒下了,我想重新启动他们。

我正在编写一个 crontab,它将每 60 秒使用 jps 命令获取服务的名称,如果它们不存在于结果集中,请针对这些服务中的每一个发出特定的重启命令。

我希望这些服务始终可用,因此如果它们出现故障,我可以让它们重新启动并运行。

我担心万一这些服务中的任何一个挂断,我怎么知道。有没有办法知道挂起的服务并杀死它们?

是否有一种干净的方式来实现服务的自动重启,这将处理“关闭的服务”和“挂起的服务”。

谢谢

4

3 回答 3

1

有没有办法知道挂起的服务并杀死它们?

判断任意进程是否已挂起并非易事。您可以检查几件事:

  • 它是否响应网络请求 - 尝试curl或以其他方式发送低影响测试请求。
  • 它是否记录到磁盘 - 检查日志文件的最后更新时间,如果它比 X 旧,则将其终止。

在一般情况下,它是无法解决的,但这些是大多数进程所做的事情的一些常见指针,您可以检查它们。

于 2013-06-20T20:21:03.770 回答
1

我建议,假设可以使用网络查询这些服务,您可以通过 localhost 调用这些服务,如果它们超时,则使用 killall 或 pkill 命令杀死它们并重新启动它们。

抱歉没有解释很多,我希望它看起来很简单......

于 2013-06-20T20:13:26.710 回答
0

也许service --status-all可以帮助?只需 grep 输出并搜索[+]表明它已启动的输出。

其实,没必要这样。只要打电话service 'service_name' status

于 2013-06-20T20:15:24.583 回答