Linux で実行中の Java プロセスを探す

CentOS 7 系でのお話。

Java プロセスの情報を取得するには jps コマンドでも良いが、ps コマンドと grep コマンドで調べるイディオムを覚えておくと汎用性があるので紹介。

# 実行中の Java プロセスを表示する
$ ps aux | grep java

このイディオムに関するドンズバな解説があったので以下に引用。

  • ps コマンド : 実行中のプロセスを表示
  • aux はオプション
  • a : 自分以外のユーザーのプロセスも表示する
  • u : ユーザー名と開始時刻を表示する
  • x : 制御端末のないプロセスの情報も表示する

実際には、grep コマンドとセットで用いることが多い。

  • | : パイプ(左のコマンドの結果を右のコマンドの引数に渡す)
  • grep コマンド : 文字列検索

左から順に、

  • USER : プロセスの所有ユーザー
  • PID : プロセス番号
  • %CPU : CPUの占有率
  • %MEM : 実メモリでの占有率
  • VSZ : 仮想分も含めた使用サイズ(Kバイト)
  • RSS : 実メモリ上の使用サイズ(Kバイト)
  • TT : 端末名
  • STAT : プロセスの状態
    • R : 稼動中
    • S : 一時停止中
    • D : 停止不可能で一時停止
    • T : 終了処理中
    • Z : ゾンビプロセス(すでに実体は無い)
    • W : 実メモリ上に無くて,スワップアウトしている
    • N : nice値
  • STARTED : プロセスの開始時刻
  • TIME : プロセスの総実行時間
  • COMMAND : 実行コマンド名とパス(シェル表記の場合もあり)

ちなみに、grep コマンドはカラーオプション付きでエイリアスにしちゃうと Grep 結果が見やすくてオススメ。

# .bashrc にでも書いておく
alias grep='grep --color'

--color=always かも?Windows の GitBash だと上のエイリアスでパイプ後も色が付いていた。