0
我有一個使用Systemctl運行的進程,使用Restart = always 對它進行配置,這樣即使進程崩潰,它也會自行重啓,無需人工干預。當該進程重新啓動時,我想在我的java代碼中執行一些操作。我不想要調查這個過程。無論如何要實現這一目標?如何在Java中監聽進程向上或向下事件?
在此先感謝。
我有一個使用Systemctl運行的進程,使用Restart = always 對它進行配置,這樣即使進程崩潰,它也會自行重啓,無需人工干預。當該進程重新啓動時,我想在我的java代碼中執行一些操作。我不想要調查這個過程。無論如何要實現這一目標?如何在Java中監聽進程向上或向下事件?
在此先感謝。
systemd
有一個D-Bus API,您可以使用該API在單元更改狀態時接收事件通知,包括更改其ActiveState
屬性,以告知您當前是否正在運行。有關更多信息,請參閱this answer on Unix & Linux StackExchange。
要從Java程序使用此API,您需要一個用於Java的D-Bus庫。看起來好像有一個DBus-Java library,雖然它很久沒有更新過了。或者,您可能可以讓Java程序調用命令行dbus-send
和/或dbus-monitor
程序並讀取其輸出。
我不認爲有。您要麼輪詢該進程,要麼以某種方式輪詢操作系統。如果進程屬於你,那麼也許你可以讓進程寫入一個文件中的日誌,並且你可以在Java中使用'WatchService'。 –