我有一臺運行在UNIX上的服務器(Java)。查找UNIX上是否運行進程(服務器)
我試圖開發一些應用程序,將「感知」,如果服務器的狀態已被更改,並通過郵件通知我。
我想知道我該怎麼辦?如果有某種事件或其他方式來感知變化,(順便說一句,發送電子郵件不是問題)。
我在考慮Java代碼,它將在無限循環中運行,並檢查進程是否正在運行,但在我看來,這是一種糟糕的方式。
任何想法都將被接受。 謝謝。
我有一臺運行在UNIX上的服務器(Java)。查找UNIX上是否運行進程(服務器)
我試圖開發一些應用程序,將「感知」,如果服務器的狀態已被更改,並通過郵件通知我。
我想知道我該怎麼辦?如果有某種事件或其他方式來感知變化,(順便說一句,發送電子郵件不是問題)。
我在考慮Java代碼,它將在無限循環中運行,並檢查進程是否正在運行,但在我看來,這是一種糟糕的方式。
任何想法都將被接受。 謝謝。
你可以在程序(使用cron或quartz要麼)
設置上的Java程序的計時器事件,您可以檢查,看是否有特定的進程正在運行.. 可以使用ps -e | grep java
,或者你可以讓Java程序輸出量可用於跟蹤應用程序的狀態(這同樣取決於你是否能更改服務器上的應用程序),JMX消息。
感知Java服務器的狀態是在啓動之前準備的。我想你應該看看指標的項目,例如:http://metrics.codahale.com/
您可以監視服務器進程ID以檢查它是否仍在運行。這不會檢測到服務器是否處於無限循環中,這可以通過讓服務器進程定期向文件寫入時間戳來完成。如果時間戳超過時間間隔的兩倍,則可以認爲它已經死亡。
爲什麼要重塑冶金學? [Nagios](http://www.nagios.org/)是天賜之物。 – Nishant 2012-02-28 10:20:08