Java 9のProcess APIでプロセス情報のスナップショットを取得する方法
Java 9ではProcess APIが大幅に強化され、新しいメソッドが追加されたほか、プロセスとその詳細情報を取得するための新しいインターフェースとしてProcessHandleおよびProcessHandle.Infoが導入されました。
ProcessHandleインターフェースは、ネイティブプロセスを識別し、その制御を可能にします。個々のプロセスに対して、生存状態(liveness)の監視、子プロセスの一覧表示、プロセス情報の取得、さらにはプロセスの破棄(destroy)といった操作を行うことができます。一方、ProcessHandle.Infoインターフェースは、特定の時点におけるプロセス情報のスナップショットを提供します。
構文
ProcessHandle.Info info()
info()メソッドは、現在のプロセスハンドルからProcessHandle.Infoインスタンスを返します。なお、ユーザー名や開始時刻などの各属性はOptional型で返されるため、値が存在しない場合にも安全に扱えるようになっています。
コード例
public class ProcessSnapShotTest {
public static void main(String[] args) {
ProcessHandle currentProcessHandleImpl = ProcessHandle.current();
// ProcessHandle.Infoを使って、現在実行中のプロセスのスナップショットを取得:
ProcessHandle.Info processInfo = currentProcessHandleImpl.info();
System.out.println("nProcess snapshot of the current running process:");
System.out.println("User : " + processInfo.user().get());
System.out.println("Start Time : " + processInfo.startInstant().get());
}
}
実行結果
Process snapshot of the current running process: User : Tutorialspoint\User Start Time : 2020-05-01T05:44:41.458Z
このように、ProcessHandle.current()で現在実行中のプロセスへのハンドルを取得し、info()メソッドを呼び出すことで、実行ユーザーやプロセスの開始時刻といった情報を簡単に参照できます。従来のProcessクラスでは得られなかったOSレベルのプロセス詳細にアクセスできる点が、Java 9以降の大きな改善ポイントです。
-
Java 9のProcessBuilderを使ってプロセスを作成・管理する方法
Java 9では、Process APIが強化され、新たにProcessHandleインターフェースが追加されました。ProcessHandleのインスタンスはローカルプロセスを識別し、プロセスの状態(ステータス)の照会やプロセス管理を可能にします。従来はローカルプロセスのPIDを取得するためにネイティブコードが必要でしたが、ProcessHandle.Infoを使えば、その必要なくPIDやその他のプロセス情報を簡単に取得できるようになりました。 ProcessBuilderクラスは、オペレーティングシステム上で独立したプロセスを作成するために使用されるクラスです。以下の例では、Process
-
Linux PCのハードウェア情報を簡単に確認する方法|HardInfoの使い方を徹底解説
Linuxマシンの調子が悪くなりトラブルシューティングが必要になったとき、最初にすべきことはPCのハードウェア情報を把握することです。本体を分解して各パーツを目視で確認するのは大変ですが、軽量で使いやすいアプリ「HardInfo」を使えば、CPUやメモリ、マザーボード、GPUなど、あらゆるハードウェア情報をひとつの画面から簡単にチェックできます。 本記事では、HardInfoのインストール方法から、各種情報の見方、ベンチマーク機能、レポート出力まで、詳しく解説していきます。 HardInfoのインストール方法 HardInfoは、多くのディストリビューションに搭載されているソフトウェアセンタ