查找UNIX上是否运行进程(服务器)

查找UNIX上是否运行进程(服务器)

问题描述:

我有一台运行在UNIX上的服务器(Java)。查找UNIX上是否运行进程(服务器)

我试图开发一些应用程序,将“感知”,如果服务器的状态已被更改,并通过邮件通知我。

我想知道我该怎么办?如果有某种事件或其他方式来感知变化,(顺便说一句,发送电子邮件不是问题)。

我在考虑Java代码,它将在无限循环中运行,并检查进程是否正在运行,但在我看来,这是一种糟糕的方式。

任何想法都将被接受。 谢谢。

+0

为什么要重塑冶金学? [Nagios](http://www.nagios.org/)是天赐之物。 – Nishant 2012-02-28 10:20:08

你可以在程序(使用cron或quartz要么)

设置上的Java程序的计时器事件,您可以检查,看是否有特定的进程正在运行.. 可以使用ps -e | grep java

,或者你可以让Java程序输出量可用于跟踪应用程序的状态(这同样取决于你是否能更改服务器上的应用程序),JMX消息。

感知Java服务器的状态是在启动之前准备的。我想你应该看看指标的项目,例如:http://metrics.codahale.com/

您可以监视服务器进程ID以检查它是否仍在运行。这不会检测到服务器是否处于无限循环中,这可以通过让服务器进程定期向文件写入时间戳来完成。如果时间戳超过时间间隔的两倍,则可以认为它已经死亡。