2017-07-06 6 views
0

Systemctlを使用してプロセスを実行しており、Restart = always で構成されているため、プロセスがクラッシュした場合でも手動による介入なしに再起動されます。そのプロセスが再開すると、私は自分のJavaコードで何らかのアクションを取る必要があります。私はプロセスに投票したくありません。とにかくこれを達成するにはありますか?JavaでProcess UpまたはDownイベントを聴くにはどうすればいいですか?

ありがとうございます。

+0

あるとは思いません。プロセスをポーリングするか、何らかの理由でOSをポーリングします。プロセスがあなたに属していれば、ログにファイルを書き込むプロセスを作成し、Javaで 'WatchService'を使用することができます。 –

答えて

0

systemdにはD-Bus APIがあります。これは、ユニットの状態が変更されたときにイベント通知を受け取るために使用されます。現在実行中かどうかを示すActiveStateプロパティの変更が含まれます。詳細については、this answer on Unix & Linux StackExchangeを参照してください。

JavaプログラムからこのAPIを使用するには、Java用のD-Busライブラリが必要です。長い時間更新されていませんが、DBus-Java libraryがあるようです。あるいは、Javaプログラムがコマンドラインdbus-sendおよび/またはdbus-monitorプログラムを起動し、それらの出力を読み込ませるようにすることもできます。

関連する問題