4月に予定していた、基本情報が受けれなくなった。わっはっは。秋に再チャレンジします。そしてちょっとスケジュールに余裕が出来たので、LPIC level2を少し余裕を持ってチャレンジする事にします。
それはさておき、今日のリソース関連はpsコマンドです。
UnixオプションとBSDオプション
こちらも仕事上でよく使いますね。ただ使う場合は特に何も意識せず”ps -ef”と実行していましたが、人によっては”ps aux”を使う人もいるみたいですね。これらの違いって何なんでしょうかと、今更疑問に思いました。とりあえずマニュアルを読んでみると、これらの違いはUnixオプションかBSDオプションかの違いとありますが、イマイチよく分かりません。まずはこれらのオプションで表示される内容の違いについて確認していきます。
とりあえずなんのオプションも無しで実行する。
# ps PID TTY TIME CMD 3881 pts/0 00:00:00 ps 10902 pts/0 00:00:00 su 10903 pts/0 00:00:00 bash
psコマンドのオプションなしは、”ユーザーが自分自身” かつ”入出力端末をもっている(TTYがある)”条件を満たしたプロセスのみ表示されます。
Unixオプション
まずはUnixオプションから。オプションの前に”-“が付くやつです。”ps -ef”がこれにあたります。
-fオプション
出力フォーマットを変えるのが”-e”オプション。実行してみると。。
# ps -f UID PID PPID C STIME TTY TIME CMD root 3961 10903 0 16:17 pts/0 00:00:00 ps -f root 10902 2024 0 2016 pts/0 00:00:00 su - root 10903 10902 0 2016 pts/0 00:00:00 -bash
表示されるプロセスは同じだが、出力されるカラムが増えている。PIDの他にPPIDが増えているが、こいつは親プロセスのPIDらしい。ちなみに遡っていくと、bashとかinitが親として現れます。対象のプロセスを呼び出している元と考えれば良いのだろうか。
-eオプション
で今度は全てのプロセスを表示する-eオプションを実行してみる。
PID TTY TIME CMD 1 ? 00:00:01 init 2 ? 00:00:00 kthreadd 3 ? 00:00:01 migration/0 4 ? 00:00:01 ksoftirqd/0 5 ? 00:00:00 stopper/0 6 ? 00:00:03 watchdog/0 7 ? 00:00:02 migration/1 8 ? 00:00:00 stopper/1 <以下略>
ずらっといっぱい表示されます。これに-fオプションを組み合わせれば、普段使っている”ps -ef”になります。
UID PID PPID C STIME TTY TIME CMD root 1 0 0 2016 ? 00:00:01 /sbin/init root 2 0 0 2016 ? 00:00:00 [kthreadd] root 3 2 0 2016 ? 00:00:01 [migration/0] root 4 2 0 2016 ? 00:00:01 [ksoftirqd/0] root 5 2 0 2016 ? 00:00:00 [stopper/0] root 6 2 0 2016 ? 00:00:03 [watchdog/0] root 7 2 0 2016 ? 00:00:02 [migration/1] root 8 2 0 2016 ? 00:00:00 [stopper/1] <以下略>
PIDの順番で-fオプションの出力カラムが出てきます。やっと”-ef”指定が理解出来ました。涙が出てきます。普段これぐらいしか使っていませんが、他にも何かオプションあるので試してみました。
-aオプションと-dオプション
まず-aオプションはセッションリーダーと端末を持たないプロセスを”除く”プロセスを表示します。
# ps -a PID TTY TIME CMD 4228 pts/1 00:00:00 su 4229 pts/1 00:00:00 bash 4830 pts/1 00:00:00 ps 10902 pts/0 00:00:00 su 10903 pts/0 00:00:00 bash
-dの場合はセッションリーダーのみを除きます。
PID TTY TIME CMD 2 ? 00:00:00 kthreadd 3 ? 00:00:01 migration/0 4 ? 00:00:01 ksoftirqd/0 5 ? 00:00:00 stopper/0 6 ? 00:00:03 watchdog/0 7 ? 00:00:02 migration/1 8 ? 00:00:00 stopper/1 9 ? 00:00:01 ksoftirqd/1 <以下省略>
PID1のinitが省略されているのがわかります。
他にも-l,-u [username]のオプションがあるようですが、とりあえず説明は割愛。使ってみて下さい。
BSDオプション
次はBSDオプションから。オプションの前に”-“が付かないやつです。”ps aux”がこれにあたります。
aオプション
まずはaオプションから調べていきます。
# ps a PID TTY STAT TIME COMMAND 1993 tty2 Ss+ 0:00 /sbin/mingetty /dev/tty2 1996 tty3 Ss+ 0:00 /sbin/mingetty /dev/tty3 1998 tty4 Ss+ 0:00 /sbin/mingetty /dev/tty4 2000 tty5 Ss+ 0:00 /sbin/mingetty /dev/tty5 2024 pts/0 Ss 0:00 -bash 4195 pts/1 Ss 0:00 -bash 4228 pts/1 S 0:00 su - 4229 pts/1 S 0:00 -bash 4707 pts/2 Ss 0:00 -bash 5730 tty1 Ss+ 0:00 -bash 5749 tty6 Ss+ 0:00 -bash 5810 pts/2 S+ 0:00 top 5838 pts/1 R+ 0:00 ps a 10902 pts/0 S 0:00 su - 10903 pts/0 S+ 0:00 -bash
aオプションは自分以外も表示するようになります。このユーザーはpts/1ですが、pts/0,2やttyも表示されるようになりました。
xオプション
次はxオプションを調べます。
#ps x PID TTY STAT TIME COMMAND 1 ? Ss 0:01 /sbin/init 2 ? S 0:00 [kthreadd] 3 ? S 0:01 [migration/0] 4 ? S 0:01 [ksoftirqd/0] 5 ? S 0:00 [stopper/0] 6 ? S 0:03 [watchdog/0] 7 ? S 0:02 [migration/1] 8 ? S 0:00 [stopper/1] 9 ? S 0:01 [ksoftirqd/1] 10 ? S 0:02 [watchdog/1] <以下略>
xオプションは端末が無いものも表示するようになります。なので表示されているのはセッションリーダーを含めて自分の全てのプロセスとなります。これにaオプションを組み合わせることで、他ユーザーも含めた全てのプロセスを表示するとなるわけですね。”-p”と同じと考えて良いんでしょう。多分。
uオプション
そしてauxの最後uオプションを実行します。
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1993 0.0 0.0 4064 268 tty2 Ss+ 2016 0:00 /sbin/mingetty /dev/tty2 root 1996 0.0 0.0 4064 264 tty3 Ss+ 2016 0:00 /sbin/mingetty /dev/tty3 root 1998 0.0 0.0 4064 268 tty4 Ss+ 2016 0:00 /sbin/mingetty /dev/tty4 root 2000 0.0 0.0 4064 260 tty5 Ss+ 2016 0:00 /sbin/mingetty /dev/tty5 root 4228 0.0 0.1 69168 2624 pts/1 S 16:36 0:00 su - root 4229 0.0 0.0 11692 1836 pts/1 S 16:36 0:00 -bash root 5730 0.0 0.0 11560 1800 tty1 Ss+ 18:46 0:00 -bash root 5749 0.0 0.0 11560 1800 tty6 Ss+ 18:47 0:00 -bash root 5917 0.0 0.0 8616 792 pts/0 S+ 18:56 0:00 less root 5994 0.0 0.0 13372 1036 pts/1 R+ 19:01 0:00 ps u root 5995 0.0 0.0 8616 780 pts/1 S+ 19:01 0:00 less root 10902 0.0 0.0 69168 1560 pts/0 S 2016 0:00 su - root 10903 0.0 0.1 11772 2052 pts/0 S 2016 0:00 -bash
これで見てみると、フォーマットを指定する”-f”オプションと項目が微妙に違いますね。あちらにあってこちらに無いものもあるので、必要によって用途を変えるんでしょうかね。BSDフォーマット見やすいですが、割りと親プロセス確認する事があるので、基本はUnixオプション使いそうな気がします。
とりあえず今回はこんな感じで。。尚、今回調べていく過程で、セッションやプロセスについての理解が曖昧すぎる事を痛感した為、こちらも後日まとめてみようと思います。