我想监控 linux 中的几个服务。万一他们倒下了,我想重新启动他们。
我正在编写一个 crontab,它将每 60 秒使用 jps 命令获取服务的名称,如果它们不存在于结果集中,请针对这些服务中的每一个发出特定的重启命令。
我希望这些服务始终可用,因此如果它们出现故障,我可以让它们重新启动并运行。
我担心万一这些服务中的任何一个挂断,我怎么知道。有没有办法知道挂起的服务并杀死它们?
是否有一种干净的方式来实现服务的自动重启,这将处理“关闭的服务”和“挂起的服务”。
谢谢
有没有办法知道挂起的服务并杀死它们?
判断任意进程是否已挂起并非易事。您可以检查几件事:
curl
或以其他方式发送低影响测试请求。在一般情况下,它是无法解决的,但这些是大多数进程所做的事情的一些常见指针,您可以检查它们。
我建议,假设可以使用网络查询这些服务,您可以通过 localhost 调用这些服务,如果它们超时,则使用 killall 或 pkill 命令杀死它们并重新启动它们。
抱歉没有解释很多,我希望它看起来很简单......
也许service --status-all
可以帮助?只需 grep 输出并搜索[+]
表明它已启动的输出。
其实,没必要这样。只要打电话service 'service_name' status
。