ps -ef | grep でヘッダを出す方法

2016/08/11

ps -ef | grep を行うと、psのヘッダが出てくれない。
ヘッダを出す方法は主に2通りで、ps -efに head -1 を付けるか、grepのかわりに ps -f -C cmdlist を使うか。
head -1を付ける方法自体も2通りあるので、合計3通りの書き方がある。

目次

head -1を付ける方法その1

ps -ef | head -n 1 と 本来書きたかったps -ef | grepを ; でつなげて書く。

head -1を付ける方法その2

方法その1だとps -efを二度書かなければならない。
グループコマンド(group command) とよばれる「{ }」を利用すれば、ps -ef を1度だけ書けばいい。
グループコマンドは、リストとの間が空白またはシェルのメタ文字で分かれている必要がある。

そして、方法その2にはもう一つメリットがある。
通常 ps -ef | grep 〇〇 を行うと、標準出力に自分自身(つまり grep 〇〇)が表示されてしまう。
何度か実行したが、グループコマンドを利用すると、ps -ef | grep の結果に自分自身は表示されなかった。

grepのかわりにps -f -C cmdlistを使う方法

実はps -ef | grepと同等の機能が、grepを使わずにpsのオプションだけで実現できる。
そもそもps -ef | grepを行うとヘッダが表示されない原因はヘッダの文字列がgrepの正規表現に合致しないためなので、grepを使わずにpsだけで実現できれば、ヘッダも表示されたままである。

grepとの違いは、grepはコマンドの引数もマッチの対象にできるため、grepの方が柔軟ではある。
-e 「全て」はとる
-f 「フルフォーマット」指定は変えない

例:

またps -f -U userlist等も同様の使い方ができるが、psのオプションは条件がorでつながっていくので、-Cと-Uを同時に指定はできない。
やはり柔軟さを求めるならgrepで正規表現等を使うのが一番いいかもしれない。

ということで、一番のお勧め方法はhead -1を付ける方法その2となる。

-Linux
-,