我的應用程序由4個獨特的進程組成。對於HA原因,我將啓動每個進程的3個實例,每個進程的2個實例將在單個Linux主機上運行,另一個在另一個Linux主機上運行。 我想寫一個監視腳本(bash腳本),它會定期輪詢這些進程。我的主要挑戰是,編寫一個與主機名和進程名相關的腳本聽起來很不方便。例如,我不想編寫一個腳本,它監視linux上的IP地址爲A和進程A-3的Linux主機上的進程A-1,進程B-1,進程A-2,進程B-2 IP主機地址B.如何監視linux上的各種進程
編寫獨立於主機名和進程名的監視腳本的一種方法是,當這些進程中的每個啓動時,它們都會創建一個互斥量名稱。例如,process-A-1將創建一個名爲mutex.process-A-1的互斥體,並且process-A-2將創建一個名爲mutex.process-A-2的互斥體。然後,腳本所要做的就是在名爲mutex.process-A *的系統上尋找互斥體。然後腳本可以使用ps命令來檢查這些處理是否正在運行。
我的問題是,耦合互斥名稱好嗎?有沒有解決這個問題的另一種方法在Linux上?
你不能只使用init/upstart/systemd來保持你的進程運行嗎? – tMC
接下來的問題是跟蹤每臺服務器上部署的組件數量。例如,安裝了10個進程,因此需要在服務器A上監控10個進程。4安裝了進程,因此需要監控4個進程。如果是tommorow,我將它們交換,現在還需要修改腳本。 – Jimm
也許一些老學校:你也可以讓你的進程監聽USR1或其他任何信號,並讓他們在預定文件中記錄某些內容或者與日誌進程交談(如syslogd)。然後,您會知道它們是否在運行,並且還會獲得一些很好的狀態報告。您可以將信號發送給所有給定的名稱,或者在啓動過程時使用存儲的pid進行處理。 – opaque