【Linux基礎】psコマンドでプロセスを管理する

Linuxコマンドを基礎から学んでる猫だくさんです。
普段なんとなーく使っているLinuxコマンドについて復習しています。
各コマンドを復習していく中で意味を理解していないものが多く、これらのコマンドは一体どうやって覚えたんだろうという疑問がわきました。

今回はpsコマンドについて学んででいきたいと思います!

psコマンドとは

現在Linuxで実行されているプロセスの一覧を表示するコマンドです。
用途としてはLinuxの動作が遅いときなどに原因となるプロセスを探すときに使用します。

プロセスとは?

Linuxで動いているプログラムのことです。
プロセスはコマンドを実行することで生成され、役目を終えると破棄されます。

一方でシェルのプロセスは動いていないと困るので、端末を使用している間はメモリに保持されています。

試しに使ってみましょう

気軽に使えるLinux仮想環境Envaderを使用します。

早速シンプルにpsと打ってみます。

$ psコマンド
    PID TTY          TIME CMD
     36 pts/1    00:00:00 bash
     64 pts/1    00:00:00 ps

自分が現在実行しているプロセスが表示されました。
なんどなくCMD(コマンド)が表示されてるんだなってことがわかります。

psコマンドオプション

もう少し詳細な情報が欲しいですね。
詳しく表示するためにはオプションを指定します。

比較的よく使われる(と思われる)オプションは以下のとおりです。

OptionDescription
-A全プロセスを表示する
-a端末が操作しているプロセス表示
-u各プロセスのCPUやメモリの使用率を表示
-x現在実行しているプロセスを表示
-fプロセスをツリー構造で見やすく表示
-p実行しているプロセスのPIDを指定して表示
-eコマンド名の後に環境情報などの情報を表示
-lプロセスを長いフォーマットで表示する
-Fプロセスを完全なフォーマットで表示

これらのオプションを複合して使用することもできます。
ps auxなどはよく使いますね。

$ ps aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  1.7  0.0  17944  2672 ?        Ss   15:59   0:00 /bin/bash /init.sh
root          12  0.0  0.0  69956  3020 ?        Ss   15:59   0:00 /usr/sbin/sshd
root          13  0.0  0.0 702212  1040 ?        Sl   15:59   0:00 /bin/secret
root          14  0.0  0.0   4220   692 ?        S    15:59   0:00 tail -f
root          18  0.0  0.1  92728  6444 ?        Ss   15:59   0:00 sshd: envader [priv]
envader       24  0.0  0.1  92728  4268 ?        S    15:59   0:00 sshd: envader@pts/0
envader       25  0.0  0.0  19240  3336 pts/0    Ss+  15:59   0:00 -bash
envader       33  0.0  0.0  18808  2860 pts/0    S+   15:59   0:00 tmux new -s main
envader       35  0.0  0.0  27420  3136 ?        Ss   15:59   0:00 tmux new -s main
envader       36  0.0  0.0  19480  3760 pts/1    Ss   15:59   0:00 -bash
envader       47  0.0  0.0  37784  3204 pts/1    R+   15:59   0:00 ps aux

端末が操作しているプロセスと現在実行しているプロセス(デーモン等)についてCPUやメモリの消費率とともに出力されました。

情報の見方

それぞれの項目の意味を表にしてみました。

heddermean
USERユーザーの名前
PIDプロセスID
%CPUCPU使用率
%MEM実メモリ使用率
VSZ仮想分を含めた使用サイズ
RSS実メモリ上の使用サイズ
TTY端末名
STATプロセスの状態表示
STARTプロセス開始時間
TIMECPU累積使用時間
COMMANDコマンド名

実の所半分も意味がわかっていませんw

さて、見慣れた画面ですがさらにps auxffオプションを追加してツリー表示すると更に視認性が良くなります。

$ ps auxf
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.0  17944  2672 ?        Ss   15:59   0:00 /bin/bash /init.sh
root          12  0.0  0.0  69956  3020 ?        Ss   15:59   0:00 /usr/sbin/sshd
root          48  0.0  0.1  92728  6676 ?        Ss   16:12   0:00  \_ sshd: envader [priv]
envader       54  0.0  0.1  92860  4340 ?        S    16:12   0:00      \_ sshd: envader@pts/0
envader       55  0.0  0.0  19240  3232 pts/0    Ss+  16:12   0:00          \_ -bash
envader       63  0.0  0.0  18808  2816 pts/0    S+   16:12   0:00              \_ tmux attach -t main
root          13  0.0  0.0 702212  1040 ?        Sl   15:59   0:00 /bin/secret=071f1e2cba18ef808fbd5740eb7d3e45
root          14  0.0  0.0   4220   692 ?        S    15:59   0:00 tail -f
envader       35  0.0  0.0  27420  3200 ?        Ss   15:59   0:00 tmux new -s main
envader       36  0.0  0.0  19480  3636 pts/1    Ss   15:59   0:00  \_ -bash
envader       75  0.0  0.0  37784  3224 pts/1    R+   16:37   0:00      \_ ps auxf

引用:プロセス管理 ー 1

各コマンドの関係性がわかりやすいですね。

※情報をツリー表示するコマンドとしてpstreeコマンドというものもあります。

これでプロセスの状況を把握してkillしたりすることができます。
killコマンドについてまとめました!

Linux基礎プロセスをkillしたりジョブをbgしたりfgする
killとは穏やかではありませんが、今回killするのはプロセスさんです。プロセスさんはkillされ慣れてるのでさほど心配する必要はありませんよ。サイコパスみたいな文章となりましたが、killコマンドとジョブをフォアグラウンドで実行した...

学んだこと

  • psコマンドでプロセスの状態を把握する
  • psコマンドで表示された情報の見方

今のところ表示したからなんじゃいって感じですが、後々多用することになる、ハズw

猫たちはそのへんで転がっています。

参考資料

コース一覧 | エンベーダー
コース一覧に関するページです。Linuxを学べるLinux基礎・応用コースを始めとして、エンジニア必須の知識であるデータベースやセキュリティのコースもあります。
【初心者向け】Linuxのプロセスについて一通りわかる!
プロセスとは、Linuxで動いているプログラムのことだ。このページではLinuxのプロセスについてまとめてご紹介する。Linux初心者の方は参考にしてほしい。
【 ps 】コマンド――実行中のプロセスを一覧表示する
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介してきます。今回は、「ps」コマンドです。

コメント