Sahara's WebLog

日記のような、備忘録のような、うらみつらみのような、自慢のような…。

Linuxで実行中のプロセスを表示する。

ps aux | grep hogehoge
で、実行中のプロセスのうち、hogehogeを含むものが表示される。
ps aux | grep motion
とやるとこうなる。

ずっと思っていたのだが、こうやるとリストの意味を示すヘッダが表示されずに分かりにくい。
ps aux | head -1 && ps aux | grep hogehoge
ってやればいい。

そもそもこのコマンドたちは何をやっているのか調べてみた。
(1)ps aux
 ps は「実行中のプロセスを表示する」コマンドだ。
 auxは以下の意味を持つオプションだ。
  a:自分以外のユーザーのプロセスも表示する
  u:ユーザー名と開始時刻を表示する
  x:制御端末のないプロセスの情報も表示する
実行するとこうなる。

(2)grep hogehoge
 grep は「文字列を検索する」コマンドだ。
 文字列「hogehoge」を含む行のみ表示する。
(3)|(パイプ)
 2つのコマンドの出力を組み合わせる。
 パイプとなってつなぐイメージだ。

結局、(1)(3)(2)やることで、psの出力のうちgrepにかなったものだけが表示されることになる。
そこで、上のように知りたいプロセスの状況だけが表示できるって寸法だ。

(4)head -n
 headは先頭のn行を抜き出すコマンドだ。
(5)&&
 ANDだ。

つまり、ps auxの1行目だけを出力し、ps auxのうちで「hogehoge」を含むものだけの出力と合わせて表示する。

なお、grep自身もプロセスなので表示されてしまうから、これを嫌うなら以下のようにする。
ps aux | grep hogehoge | grep -v grep
-v はそれ以下の文字を含むものを除外するオプションだ。

以上をすべて合わせると下のようになる。
ps aux | head -1 && ps aux | grep hogehoge | grep -v grep

長いけど、どこかに書いておいてコピペするだけなので別にかまわない、重宝しそうだ。

ただ、起動した時刻だけ知りたい場合はこんな感じだ。
ps -eo pid,lstart,args | grep hogehoge

後になったが、肝心のヘッダーの意味は以下の通り。

追記
4時13分に開始して、今16時34分なのにTIMEは175分となってる。
TIMEの意味がよくわからない。

このエントリーをはてなブックマークに追加

Posted under: ubuntu


コメントを残す

メールアドレスが公開されることはありません。

Time limit is exhausted. Please reload CAPTCHA.