2017-07-06 79 views
0

我有一個使用Systemctl運行的進程,使用Restart = always 對它進行配置,這樣即使進程崩潰,它也會自行重啓,無需人工干預。當該進程重新啓動時,我想在我的java代碼中執行一些操作。我不想要調查這個過程。無論如何要實現這一目標?如何在Java中監聽進程向上或向下事件?

在此先感謝。

+0

我不認爲有。您要麼輪詢該進程,要麼以某種方式輪詢操作系統。如果進程屬於你,那麼也許你可以讓進程寫入一個文件中的日誌,並且你可以在Java中使用'WatchService'。 –

回答

0

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程序並讀取其輸出。

相關問題