psはLinux上で現在動作しているプロセスを表示するコマンドだ。Linuxは一見単純な操作でも、内部では数多くの処理から成り立っている。プロセスとは、Linux内の一つ一つの処理のことだ。
grepコマンドを実行すれば、指定したファイルを開いて検索文字を探す処理を行う。またコマンド未入力の時点でも受付待機の処理中であり、何かのコマンドが入力されれば、そのコマンドに準じたプログラムを呼び出す処理を行っている。これら一つ一つの処理がプロセスだ。
このページではpsコマンドを使ったLinuxの動作状況の確認方法を解説する。
Linuxの動作が遅い時の原因を追究したり、不要なアクセスを監視したりすることもできるので、Linux管理者にとっては必須のコマンドだ。
ぜひ、この機会に覚えておいてほしい。
目次
- 1 psコマンドの基本
- 2 psコマンドのオプションたち
- 2.1 コマンドの一覧
- 2.2 aオプション:端末操作のプロセスを表示する
- 2.3 -xオプション:現在、実行しているプロセスを表示する
- 2.4 cオプション:実行しているコマンド名を表示する
- 2.5 eオプション:実行しているコマンド名と環境変数を表示する
- 2.6 uオプション:CPUやメモリの使用率なども表示する
- 2.7 hオプション(オプション--no-headers):項目名を表示しない
- 2.8 lオプション:プロセスの状態なども表示する
- 2.9 fオプション(-Hオプション,--forestオプション):プロセスを階層で表示する
- 2.10 oオプション(-oオプション, --formatオプション):指定したリスト順の出力形式で表示する
- 2.11 -Cオプション:実行しているプロセスやプログラムのファイル名を指定する
- 2.12 -uオプション:プロセスを実行しているユーザーを指定する
- 2.13 -pオプション(pオプション,--pidオプション):実行しているプロセスのプロセス番号(PID)を指定する
- 2.14 --sortオプション:プロセスの表示順を指定する
- 3 最も使用頻度の高いオプションaux
- 4 関連コマンド
psコマンドの基本
コマンドの基本動作
使い方は、次のとおり簡単だ。
$ ps
現在、Linux上で動作しているプロセスを確認するにはこれだけだ。
現在、動作しているプロセスが表示できた。
psコマンドのオプションたち
コマンドの一覧
psコマンドのオプションの特徴として、他のコマンドのようにオプションの前に-や--が付与されず、アルファベット1文字だけのオプションも数多く存在する。
-や--が付与されないションの多くは、別の指定方法として-や--が付与されるオプションも用意されている。
あなたが一番使いやすい形式のオプションを選んで使うとよいだろう。
また、オプションは、大きく分けて、どのように表示するかを指定するものと、何を表示するかを指定するものの2種類があるのでそれぞれ分けて把握するとわかりやすい。
それぞれのオプションについて、後から詳細をご紹介するが、まずは一覧で見てみよう。
オプション -A(オプション -e)
全プロセスを表示する。
オプション a
端末操作のプロセスを表示する。
オプション x
端末操作以外のプロセスを表示する。
オプション r
現在、実行しているプロセスを表示する。
オプション c
実行しているコマンド名を表示する。
オプション e
実行しているコマンド名と環境変数を表示する。
オプション u
CPUやメモリの使用率なども表示する。
オプション h(オプション--no-headers)
項目名を表示しない。
オプション l
プロセスの状態なども表示する。
オプション f(オプション-H, オプション--forest)
プロセスを階層で表示する。
オプション o(オプション-o, オプション--format)
指定したリスト順の出力形式で表示する
オプション -C
実行しているプロセスやプログラムのファイル名を指定する。
オプション -u
プロセスを実行しているユーザーを指定する。
オプション -g
プロセスを実行しているグループを指定する。
オプション -p(オプションp,オプション--pid)
実行しているプロセスのプロセス番号(PID)を指定する。
オプション --sort
プロセスの表示順を指定する。
項目名の指定は小文字で行う。
では詳しく見ていこう。
aオプション:端末操作のプロセスを表示する
他の端末を含め、端末操作のプロセスを表示するオプションだ。
$ ps a
他の端末を含めた端末操作のプロセスが表示された。
-xオプション:現在、実行しているプロセスを表示する
現在実行しているプロセスのみを表示するオプションだ。
$ ps -x
<中略>
現在実行しているプロセスが表示された。
すべてのプロセスはとても多いため、途中を省略している。
cオプション:実行しているコマンド名を表示する
コマンド名を表示するオプションだ。
$ ps c
commandとしてプロセスのコマンド名が表示された。
eオプション:実行しているコマンド名と環境変数を表示する
コマンド名と環境変数を表示するオプションだ。
$ ps e
コマンド名と環境変数が表示された。
uオプション:CPUやメモリの使用率なども表示する
CPUやメモリの使用率なども表示するオプションだ。
$ ps u
CPUやメモリの使用率が含んで表示された。
hオプション(オプション--no-headers):項目名を表示しない
特に指定せずにpsコマンドを実行すると項目名が表示されるが、hオプションを指定すれば項目名を表示しない。
$ ps h
項目名が表示されない。
lオプション:プロセスの状態なども表示する
プロセスごとの実行状態などを表示する。
$ ps l
プロセスごとの実行状態が表示された。
Fがプロセスの種類だ。0は終了、1は常駐、4は親のプロセスからトレースされている、5は常駐で親のプロセスからトレースされているなどという意味がある。
-Aオプションなどと同時に使用すると表示されるSは状態のことで、Rは実行可能、Sは休眠中、T、Zは停止中などの意味がある。
fオプション(-Hオプション,--forestオプション):プロセスを階層で表示する
プロセスごとの実行状態などを表示する。
$ ps f
fオプションは-Aオプションと組み合わせるととても使いやすい。
$ ps f -A
上記コマンドの実行結果の末尾部分だけを抜粋している。
pts/3が-bashから始まるツリー構造になっているのがわかる。
oオプション(-oオプション, --formatオプション):指定したリスト順の出力形式で表示する
自分で指定した項目だけを表示できるオプションだ。
$ ps o 表示したい項目リスト
表示する項目名は小文字で指定し、複数の項目は「,」で区切る。
PIDとUID、TTYのみ表示するには次のコマンドだ。
$ ps o pid,uid,tty
PIDとUID、TTYのみ表示された。
-Cオプション:実行しているプロセスやプログラムのファイル名を指定する
自分で指定した項目だけを表示できるオプションだ。
プログラムleafpadのプロセスを表示するには次のコマンドだ。
$ ps -C leafpad
プログラムleafpadのプロセスが表示された。
この時点では、GUIベースのテキストエディタleafpadの画面を2つ起動していた。
-uオプション:プロセスを実行しているユーザーを指定する
表示するユーザーを指定できるオプションだ。
$ ps -u ユーザー名
ユーザーLimeのプロセスを表示するには次のコマンドだ。
$ ps -u Lime
ユーザーLimeのプロセスが表示された。
-pオプション(pオプション,--pidオプション):実行しているプロセスのプロセス番号(PID)を指定する
表示するプロセス番号(PID)を指定できるオプションだ。
$ ps -p プロセス番号(PID)
プロセス番号(PID)20949番を表示するには次のコマンドだ。
$ ps -p 20949
プロセス番号(PID)20949番のプロセスが表示された。
--sortオプション:プロセスの表示順を指定する
表示する順番を指定できるオプションだ。
並べ替えのキーとなる項目は小文字で、複数ある場合は並べ替えの優先順位の低い順に「,」で区切る。
$ ps --sort 項目名リスト
端末操作のプロセスをCOMMAND、STATの順の優先順位で表示するには次のコマンドだ。
$ ps a --sort stat,command
端末操作のプロセスがCOMMAND、STATの順の優先順位で表示された。
最も使用頻度の高いオプションaux
psコマンドで最も使用頻度の高い利用方法は、a、u、xそれぞれのオプションを組み合わせた、次のコマンドだ。
$ ps aux
<中略>
すべての種類のプロセスの知り得るだけの情報がすべて網羅される。
さらに、fオプションを追加すればプロセスがツリー構造になるので、視認性が向上する。
$ ps auxf
<中略>
プロセスがツリー構造で表示された。
関連コマンド
最後にpsコマンドに関連して、基本的なプロセス関係のコマンドも紹介しておく
jobコマンド
ジョブを表示する。
killコマンド
プロセスやジョブを停止する。
まとめ
今回は、psコマンドを使った実行プロセスの確認の方法を解説した。
一つ一つの実行するコマンドのこともプロセスだし、GUIで操作していれば意識しなくても様々なプログラムを動かすことになるがこれもプロセスだ。
それらを監視し、不要な操作や、異常終了した処理を調べてkillコマンドで停止させていくという運用方法もあるだろう。
まず、あなた自身のLinux内でどんなプロセスが実行されているのか確認してみよう。
psコマンドはauxオプションを付与することがほとんどなので、「ps aux」と暗記してもいいだろう。
あなたが管理しているLinuxはあなたが責任を持って管理しなければならない。
ぜひ今回の知識を応用し、活用して欲しい。
BSDとUNIXオプションが混ざってますよ
ご指摘いただきありがとうございます。
該当箇所の記述を訂正いたしました。
引き続き、ご愛読のほど、よろしくお願いいたします。