Linuxのpsコマンドとは?プロセス一覧を表示する基本を初心者向けに徹底解説
生徒
「Linuxで今動いているプログラムを確認するには、どうすればいいですか?」
先生
「Linuxではpsコマンドを使うことで、実行中のプロセスを確認できますよ。」
生徒
「プロセスって何ですか?それって難しそうですね…。」
先生
「プロセスは簡単に言うと、動いているプログラムのことです。基礎から丁寧に説明していくので安心してください。」
1. psコマンドとは?プロセスの基本を知ろう
psコマンドは、Linuxで現在実行中のプロセス一覧を表示するための基本的なコマンドです。プロセスとは、実行されているプログラムのことを指します。たとえば、ウェブブラウザを開いているときや音楽プレーヤーを使っているときなど、それぞれが一つのプロセスとして動作しています。
Windowsのタスクマネージャーで実行中のプログラムを確認するのと似ていますが、psコマンドはターミナル上で文字情報として表示します。プロセスの状態を把握することで、システムの管理やトラブルシューティングに役立てることができます。
psという名前は「Process Status」の略で、プロセスの状態を表示するという意味があります。Linux初心者の方が最初に覚えるべき重要なコマンドの一つです。
2. psコマンドの基本的な使い方
psコマンドの最も基本的な使い方は、オプションなしで実行する方法です。ターミナルにpsと入力するだけで、現在のターミナルで実行されているプロセスが表示されます。
ps
PID TTY TIME CMD
1234 pts/0 00:00:00 bash
5678 pts/0 00:00:00 ps
この結果では、いくつかの情報が列として表示されています。PIDは「Process ID」の略で、プロセスを識別するための番号です。TTYは端末の種類、TIMEはCPUを使用した時間、CMDは実行されているコマンド名を示します。
この例では、bashというシェル(コマンドを入力する環境)と、今実行したpsコマンド自体が表示されています。ただし、この方法では自分が実行したプロセスしか表示されないため、より詳しい情報を得るにはオプションを使います。
3. すべてのプロセスを表示する方法
システム全体で動作しているすべてのプロセスを確認したい場合は、ps auxコマンドを使います。これはLinuxユーザーが最もよく使うpsコマンドの形式です。
ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 169924 13452 ? Ss 10:00 0:01 /sbin/init
daemon 23 0.0 0.1 28356 8924 ? Ss 10:00 0:00 /usr/sbin/atd
user 1250 0.5 1.2 854632 98456 ? Sl 10:15 0:05 /usr/bin/firefox
ここで使用しているauxは三つのオプションを組み合わせたものです。aはすべてのユーザーのプロセス、uはユーザー名や使用率などの詳細情報、xは端末に紐づいていないプロセスも表示するという意味があります。
この表示では、USERがプロセスの実行ユーザー、%CPUがCPU使用率、%MEMがメモリ使用率を示します。STATはプロセスの状態で、たとえばSはスリープ(待機中)、Rは実行中を意味します。
4. 特定のプロセスを検索して表示する
多くのプロセスが実行されている中から、特定のプロセスだけを探したいときは、grepコマンドと組み合わせて使います。たとえば、Firefoxブラウザのプロセスを探す場合は次のようにします。
ps aux | grep firefox
user 1250 0.5 1.2 854632 98456 ? Sl 10:15 0:05 /usr/bin/firefox
user 3421 0.0 0.0 12108 940 pts/0 S+ 11:30 0:00 grep firefox
この|(パイプ)という記号は、左側のコマンドの結果を右側のコマンドに渡すという意味です。つまり、ps auxの結果の中からgrepコマンドでfirefoxという文字列を含む行だけを抽出しています。
この方法を使えば、実行中のプログラムを素早く見つけることができます。Webサーバーやデータベースなど、特定のアプリケーションが動作しているか確認するときに非常に便利です。
5. プロセスをツリー形式で表示する
プロセスには親子関係があります。あるプロセスが別のプロセスを起動した場合、元のプロセスが親、新しいプロセスが子となります。この関係をわかりやすく見るには、ps auxfコマンドを使います。
ps auxf
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 169924 13452 ? Ss 10:00 0:01 /sbin/init
root 450 0.0 0.3 65632 24588 ? Ss 10:00 0:00 /usr/sbin/sshd
root 1100 0.0 0.2 98752 18432 ? Ss 10:10 0:00 \_ sshd: user
user 1102 0.0 0.1 23456 9876 pts/0 Ss 10:10 0:00 \_ bash
fオプションを追加することで、プロセスが階層構造で表示されます。インデントと\_ 記号で親子関係が視覚的にわかりやすくなっています。この例では、sshdというSSHサーバーのプロセスが、ユーザー接続用のプロセスを起動し、そこからbashシェルが動いていることがわかります。
また、pstreeという専用コマンドを使うと、よりシンプルなツリー表示でプロセスの関係を確認することもできます。プロセス管理の理解を深めるのに役立つ表示方法です。
6. プロセスIDを指定して詳細を表示する
特定のプロセスIDがわかっている場合、そのプロセスの詳細情報だけを表示することができます。ps -pオプションにプロセスIDを指定します。
ps -p 1250 -o pid,user,%cpu,%mem,command
PID USER %CPU %MEM COMMAND
1250 user 0.5 1.2 /usr/bin/firefox
-pオプションでプロセスID(この例では1250)を指定し、-oオプションで表示したい項目を選択しています。この方法を使えば、必要な情報だけを取り出せるため、画面が見やすくなります。
プロセスIDは、後で説明するプロセスの終了などの操作で必要になる重要な情報です。問題のあるプロセスを特定したり、リソースを多く使っているプロセスを調査したりする際に活用します。
7. CPU使用率やメモリ使用率で並べ替える
システムのパフォーマンスを確認するときは、CPUやメモリを多く使っているプロセスを見つけることが重要です。psコマンドとsortコマンドを組み合わせることで、使用率順に並べ替えることができます。
ps aux --sort=-%cpu | head -n 5
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
user 2345 5.2 3.4 1854632 278456 ? Sl 11:00 2:15 /opt/app/server
user 1250 2.5 1.2 854632 98456 ? Sl 10:15 0:45 /usr/bin/firefox
root 567 1.8 0.8 456789 65432 ? Ss 10:00 1:20 /usr/sbin/mysqld
--sort=-%cpuオプションでCPU使用率の降順(高い順)に並べ替えています。%記号の前のマイナスが降順を意味します。head -n 5は上位5件だけを表示するコマンドです。
同様に、--sort=-%memとすればメモリ使用率順に並べ替えられます。システムが重くなったときや、どのプログラムがリソースを消費しているか調べたいときに、この方法が非常に役立ちます。
8. psコマンドとtopコマンドの違い
プロセスを確認するコマンドとして、psコマンドの他にtopコマンドもよく使われます。この二つのコマンドの違いを理解しておくと、状況に応じて使い分けることができます。
psコマンドは、実行した瞬間のプロセス情報を一度だけ表示します。スクリプトに組み込んだり、特定の情報を抽出したりするのに適しています。一方、topコマンドは画面全体を使ってリアルタイムでプロセス情報を更新し続けます。
topコマンドを使うと、システムの負荷状況を監視し続けることができますが、psコマンドの方が他のコマンドと組み合わせやすく、自動化に向いています。定期的にログを取りたい場合や、条件に応じた処理をしたい場合はpsコマンドが便利です。
また、htopというtopの強化版コマンドもあり、カラー表示や操作性の向上などの機能が追加されています。用途に合わせて適切なコマンドを選びましょう。
9. よく使うpsコマンドのオプション一覧
psコマンドには多くのオプションがあり、組み合わせることでさまざまな情報を取得できます。ここでは初心者の方が覚えておくと便利な主なオプションを紹介します。
ps -eまたはps -Aは、すべてのプロセスを表示します。ps -fは完全なフォーマットで詳細情報を表示し、ps -lは長いフォーマットでより詳しい技術情報を表示します。
ps -u ユーザー名とすることで、特定のユーザーが実行しているプロセスだけを表示できます。たとえばps -u rootとすれば、ルートユーザーが実行しているプロセスを確認できます。
また、ps --forestはツリー表示の別の方法で、ps -C コマンド名は特定のコマンド名のプロセスだけを表示します。これらのオプションを覚えておくことで、必要な情報に素早くアクセスできるようになります。
10. psコマンドを使った実践的な活用例
psコマンドは、日常的なシステム管理で様々な場面で活用できます。たとえば、応答しなくなったプログラムを強制終了したいときは、まずpsでプロセスIDを調べてからkillコマンドで終了させます。
サーバー管理では、特定のサービスが正常に動作しているかをpsコマンドで確認することができます。Webサーバーのプロセス数をカウントしたり、データベースの起動状態をチェックしたりする際に使われます。
また、システムのパフォーマンス分析では、定期的にpsコマンドの結果をログファイルに保存し、時系列でリソース使用状況を追跡することもできます。シェルスクリプトと組み合わせることで、自動監視システムを構築することも可能です。
psコマンドは単純に見えますが、Linux管理の基礎となる重要なコマンドです。オプションを組み合わせたり、他のコマンドと連携させたりすることで、非常に強力なツールとして活用できます。基本をしっかり理解して、少しずつ使いこなせるようになりましょう。