(最終更新月:2023年4月)
✔このような方へ向けて書かれた記事となります
「PSコマンドの基本が知りたい」
「PSコマンドってどうやって使うのだろうか?」
「PSコマンドを使った実例が見てみたい」
✔当記事を通じてお伝えすること
- PSコマンドの基本
- PSコマンドのオプション一覧
- PSコマンドの実例
当記事では、PSコマンドの基本的な書き方はもちろん、オプション一覧を実例付きで紹介しています。
ぜひ最後までご覧ください。
psコマンドの基本
まずはPSコマンドの基本に目を通しましょう。
基本構文まであるので、ここだけでもPSコマンドが書けるようになります。
- psコマンドの概要
- コマンドの構文
- 実行方法
- 出力結果の見方
psコマンドの概要
psコマンドは、LinuxやUNIXシステム上で動作しているプロセスを確認・管理するためのコマンドラインツールです。
psは「process status」の略であり、システム上のプロセスの情報を取得できます。
現在実行中のプロセスのリソース使用量や状態を把握し、必要に応じてプロセスを制御することができます。
コマンドの構文
psコマンドの基本構文は以下の通りです。
ps [オプション]
psコマンドにはさまざまなオプションを組み合わせることで、異なる情報を取得できます。
例えばすべてのプロセスを表示する場合は「ps -e」、指定したユーザーのプロセスを表示する場合は「ps -u [ユーザー名]」といった形で使用します。
$ ps -e
PID TTY TIME CMD
1 ? 00:00:01 systemd
2 ? 00:00:00 kthreadd
3 ? 00:00:00 rcu_gp
4 ? 00:00:00 rcu_par_gp
5 ? 00:00:00 slub_flushwq
6 ? 00:00:00 netns
8 ? 00:00:00 kworker/0:0H-events_highpri
10 ? 00:00:00 mm_percpu_wq
11 ? 00:00:00 rcu_tasks_rude_
#まだまだ続きます...
実行方法
単に実行したいだけなら、ターミナル上で “ps” と入力し、Enterキーを押せば実行されます。
$ ps
PID TTY TIME CMD
8768 pts/0 00:00:00 bash
9236 pts/0 00:00:00 ps
オプションをつけて実行する場合は、”ps” の後にスペースを開けてオプションを入力しましょう。
出力結果の見方
psコマンドの出力結果には、以下が表示されます。
- PID (プロセスID)
- TTY (端末タイプ)
- TIME (CPU使用時間)
- CMD (コマンド名)
プロセスIDは、システムがプロセスを一意に識別するために割り当てる番号です。
主要なオプション一覧
主要なオプションを一覧にしました。
実例もあるので、ぜひご覧ください。
オプション名 | 概要 | 実例 |
---|---|---|
-A | すべてのプロセスを表示する | ps -A |
-e | すべてのプロセスを表示する (-A と同じ) | ps -e |
-u | 指定したユーザー名のプロセスを表示する | ps -u username |
-x | 端末に関連しないプロセスも表示する | ps -x |
-f | 詳細な情報を表示する | ps -f |
-l | 長い形式で表示する | ps -l |
-j | ジョブ形式で表示する | ps -j |
-C | 指定したコマンド名のプロセスを表示する | ps -C sshd |
-p | 指定したプロセスIDのプロセスを表示する | ps -p 1234 |
-o | カスタム出力フォーマットを指定して表示する | ps -o pid,cmd,%cpu |
–sort | 指定した項目でソートして表示する | ps –sort=-%mem |
よく使うpsコマンドの組み合わせ
PSコマンドでよく使われるものは以下のとおり。
コマンドだけでなく、全体を丸ごと暗記してしまえば、すぐに使いこなせます。
- プロセス名から特定のプロセス情報を取得
- プロセスIDから情報を取得
- メモリ使用量順にソート
- CPU使用率順にソート
- ユーザーごとのプロセス一覧
- プロセスツリー表示
特定のプロセスの情報を取得
特定のプロセスの情報を取得するためには、psコマンドとgrepコマンドを組み合わせて使用します。
以下の構文を用いて、特定のプロセス名を含むプロセスの情報を取得できます。
ps -ef | grep [プロセス名]
例えば、SSH関連のプロセスを調べたい場合は、以下のように入力します。
$ ps -ef | grep sshd
yulikep+ 9379 8768 0 07:44 pts/0 00:00:00 grep --color=auto sshd
これにより、”sshd”という文字列を含むプロセスの情報が表示されます。
プロセスIDから情報を取得
PSプロセスにを指定して、情報を取得します。
例は「2479」のプロセスIDを持つものを取得した例です。
~$ ps -p 2479
PID TTY TIME CMD
2479 ? 00:00:00 gnome-shell-cal
メモリ使用量順にソート
psコマンドを使用して、メモリ使用量順にプロセスを表示するには、以下の構文を用います。
ps -eo pid,cmd,%mem –sort=-%mem
以下が表示され、メモリ使用量が多い順にソートされるのです。
- プロセスID(pid)
- コマンド名(cmd)
- メモリ使用率(%mem)
$ ps -eo pid,cmd,%mem --sort=-%mem
PID CMD %MEM
3017 qemu-system-x86_64 -accel k 24.1
5910 /opt/google/chrome/chrome - 5.2
6073 /opt/google/chrome/chrome - 4.7
6087 /opt/google/chrome/chrome - 4.5
8591 /opt/google/chrome/chrome - 4.1
6016 /opt/google/chrome/chrome - 4.0
2900 /opt/google/chrome/chrome 3.9
CPU使用率順にソート
psコマンドを使用して、CPU使用率順にプロセスを表示するには、以下の構文を用います。
$ ps -eo pid,cmd,%cpu --sort=-%cpu
PID CMD %CPU
5910 /opt/google/chrome/chrome - 13.4
2900 /opt/google/chrome/chrome 5.7
3184 /opt/google/chrome/chrome - 4.2
PC・サーバーが遅いなと思うときなどに使えます。
ユーザーごとのプロセス一覧
特定のユーザーが実行中のプロセスを表示するには、以下の構文を用います。
ps -u [ユーザー名]
例えば、rootユーザーが実行中のプロセスを表示する場合は、以下のように入力します。
$ ps -u root
PID TTY TIME CMD
1 ? 00:00:01 systemd
2 ? 00:00:00 kthreadd
3 ? 00:00:00 rcu_gp
4 ? 00:00:00 rcu_par_gp
5 ? 00:00:00 slub_flushwq
これにより、rootユーザーが実行中のプロセス一覧が表示されます。
プロセスツリー表示
プロセスツリー表示を使用して、プロセスの親子関係をわかりやすく表示するには以下の構文を使用します。
$ ps --forest
PID TTY TIME CMD
8768 pts/0 00:00:00 bash
10043 pts/0 00:00:00 \_ ps
もしくは以下のようにもできます。
$ ps -eH
1 ? 00:00:01 systemd
372 ? 00:00:03 systemd-journal
464 ? 00:00:01 systemd-udevd
942 ? 00:00:00 systemd-resolve
945 ? 00:00:00 systemd-timesyn
998 ? 00:00:00 accounts-daemon
psコマンドと他のコマンドとの連携
ほかのコマンドの連携も見ていきましょう。
組み合わせることでより作業効率が上がります。
- grepコマンドとの連携
- killコマンドとの連携
- topコマンドとの違い
grepコマンドとの連携
前述のとおり、psコマンドとgrepコマンドを連携させれば、特定のプロセス名を含むプロセスの情報を取得できます。
Pythonプログラムが実行されているプロセスを検索する例を見てみましょう。
ps -ef | grep python avahi 1002 1 0 07:08 ? 00:00:00 avahi-daemon: running [yulikepython-HP-Desktop.local] root 1024 1 0 07:08 ? 00:00:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
これにより、”python” という文字列を含むプロセスの情報が表示されます。
grepコマンドについて詳しくはこちら。
killコマンドとの連携
psコマンドで特定のプロセスIDを取得した後、killコマンドを使ってそのプロセスを終了させることができます。
プロセスID。が取得できたら以下のようにして、該当するプロセスを終了させます。
例】出力結果からプロセスID(例: 12345)を確認し、終了させる場合。
kill 12345
topコマンドとの違い
topコマンドは、リアルタイムでプロセス情報を表示するコマンド。
psコマンドと違い、更新された情報を常に表示してくれるため、リソース状況の監視に適しています。
例えば、以下のように入力してtopコマンドを実行すると、CPU使用率やメモリ使用量などのリアルタイム情報が表示されます。
top
topコマンドの出力画面では、CPU使用率やメモリ使用量の高いプロセスが上位に表示されるため、リソースを消費しているプロセスをすぐに特定できます。
出力画面内でキー操作を行うことで、ソート順の変更やプロセスの終了が可能です。
まとめ:PSコマンドで適切なサーバ管理を実施しよう
当記事の内容をまとめます。
- PSコマンドを使えば実行中のプロセスを一覧で取得できる
- PSコマンドのオプションを使えば異なるデータが取得できる
- PSコマンドとほかのコマンドを組み合わせると作業効率が上がる
PSコマンドを使うとLinuxシステム上で動作するプロセスの確認・管理がしやすくなります。
よく使う構文は丸ごとコピペで使えるように、当記事をブックマークにしとくなど、上手く活用してください。