Linuxでプロセスを一覧表示する方法: 完全ガイド
はじめに
Linuxオペレーティングシステムでは、プロセスは実行の基本単位です。システムタスク、ユーザーアプリケーション、バックグラウンドサービスなど、実行中のプログラムを表します。プロセスを効率的に管理し、リスト化する能力は、システム管理者やユーザーにとって重要であり、システムパフォーマンスの監視、問題の診断、リソース使用の最適化に役立ちます。
この記事では、ps
や top
などの基本コマンドから、pstree
や lsof
といった高度なツールまで、Linuxでプロセスを一覧表示するためのコマンドやツールを詳しく説明します。この記事を読むことで、Linux環境でプロセスを効果的に管理するための知識が得られるでしょう。
プロセスを一覧表示する基本コマンド
ps
コマンド
ps
コマンドは、Linuxで最も一般的に使用されるプロセス一覧表示コマンドです。現在のプロセスのスナップショットを提供します。
ps
: 現在のシェルのプロセスを表示。ps -e
またはps -A
: システム上で動作しているすべてのプロセスを一覧表示。ps aux
: ユーザーが所有していないプロセスを含む、すべてのプロセスの詳細情報を表示。
使用例:
ps
ps -e
ps aux
top
コマンド
top
コマンドは、リアルタイムのシステム監視に役立つ強力なツールです。プロセスリストを定期的に更新し、最新情報を動的に表示します。
top
を実行してインターフェイスを開始。CPU使用率、メモリ使用率、システム統計、プロセスリストが表示されます。q
キーでtop
を終了します。
主なオプション:
top -n 1
: プロセスリストを一度だけ表示して終了。top -u [username]
: 特定のユーザーのプロセスを表示。
使用例:
top
top -n 1
top -u user
htop
コマンド
htop
は、top
に比べて視覚的にわかりやすいインタラクティブなプロセスビューアです。プロセスリストを縦横にスクロールでき、カラフルな情報を提供します。
使用方法:
- インストール(未インストールの場合):
sudo apt-get install htop # Debian系システム向け sudo yum install htop # Red Hat系システム向け
- 以下のコマンドで実行:
htop
pgrep
コマンド
pgrep
コマンドは、名前やその他の属性に基づいてプロセスを検索するために使用されます。スクリプトや自動化で特に便利です。
基本使用法:
pgrep [pattern]
: 指定したパターンに一致するプロセスID(PID)のリストを表示。pgrep -u [username] [pattern]
: ユーザーでフィルタリング。
使用例:
pgrep bash
pgrep -u root sshd
高度なプロセスリスト化テクニック
pstree
コマンド
pstree
コマンドは、プロセスをツリー形式で表示し、プロセス間の階層関係を示します。プロセスの親子関係を理解する際に便利です。
pstree
: すべてのプロセスツリーを表示。pstree -p
: プロセスID(PID)を出力に含める。pstree [username]
: 特定のユーザーのプロセスツリーを表示。
使用例:
pstree
pstree -p
pstree root
lsof
コマンド
lsof
(List Open Files)は、プロセスによって開かれているファイルに関する情報を一覧表示します。特定のファイルやポートを使用しているプロセスを特定する際に役立ちます。
基本使用法:
lsof
: すべての開いているファイルを一覧表示。lsof -u [username]
: 特定のユーザーによって開かれているファイルを表示。lsof [file]
: 特定のファイルを開いているプロセスを一覧表示。lsof -i :[port]
: 特定のネットワークポートを使用しているプロセスを表示。
使用例:
lsof
lsof -u root
lsof /var/log/syslog
lsof -i :80
pidstat
コマンド
pidstat
コマンドは、CPU使用率、メモリ使用量、I/O統計など、Linuxタスク(プロセス)の統計情報を提供します。
基本使用法:
pidstat
: タスクのCPU使用率を表示。pidstat -r
: メモリ使用量を表示。pidstat -d
: I/O統計を表示。
使用例:
pidstat
pidstat -r
pidstat -d
watch
コマンド
watch
コマンドは、指定したプログラムを定期的に実行し、その出力を表示します。コマンドの出力の変化を観察する際に便利です。
基本使用法:
watch [command]
: 指定したコマンドを定期的に実行(デフォルトは2秒ごと)。watch -n [interval] [command]
: 実行間隔を指定。
使用例:
watch ps -e
watch -n 5 netstat -tuln
実践的な例
システムパフォーマンスの監視
システムパフォーマンスの監視は、システムの健全性と応答性を維持するために重要です。特に top
や htop
コマンドが便利です。
top
を使用したパフォーマンス監視
top
コマンドは、システムプロセスとそのリソース使用状況をリアルタイムで表示します。CPUやメモリを過剰に消費しているプロセスを特定するのに役立ちます。
使用例:
top
top
インターフェイス内の主な列:
- PID: プロセスIDを表示。
- %CPU: CPU使用率を表示。
- %MEM: メモリ使用率を表示。
htop
を使用したパフォーマンス監視
htop
は、top
よりも優れたインタラクティブなインターフェイスを提供します。プロセスの並べ替え、特定のプロセスの検索、インターフェイス内でのプロセスの終了が可能です。
使用例:
htop
htop
インターフェイス内の操作:
- 矢印キーでプロセスリストを移動。
F3
キーで特定のプロセスを検索。F9
キーで選択したプロセスを終了。
特定のプロセスの管理
特定のプロセスを管理するには、ps
や pgrep
などのコマンドでプロセスを特定し、適切なアクションを実行します。
ps
と pgrep
を使用したプロセス検索
名前やその他の属性でプロセスを検索するには、ps
や pgrep
コマンドが効果的です。
ps
を使用した例:
ps aux | grep apache2
pgrep
を使用した例:
pgrep apache2
プロセスへのシグナル送信
プロセスID (PID) を特定した後、シグナルを使用してプロセスを管理できます。kill
コマンドはプロセスにシグナルを送信し、killall
コマンドは名前が一致するすべてのプロセスにシグナルを送信します。
主なコマンド:
kill [PID]
: デフォルトのシグナル (SIGTERM) を送信してプロセスを終了。kill -9 [PID]
: SIGKILL シグナルを送信して強制終了。killall [プロセス名]
: 指定した名前のすべてのプロセスにデフォルトのシグナルを送信。
使用例:
kill 1234
kill -9 1234
killall apache2
開いているファイルやネットワーク接続の確認
lsof
コマンドを使用すると、特定のプロセスによって使用されているファイルやネットワーク接続を特定できます。これにより、ファイルロックやネットワークポートの競合などの問題を診断するのに役立ちます。
使用例:
lsof /var/log/syslog
lsof -i :80
プロセスツリーの表示
pstree
コマンドを使用すると、プロセス間の親子関係を視覚化できます。これにより、プロセスの階層や依存関係を理解するのに役立ちます。
使用例:
pstree
FAQ
Linuxのプロセスとは何ですか?
Linuxにおけるプロセスは、実行中のプログラムのインスタンスを指します。プログラムコード、現在の活動状態、メモリやファイルディスクリプタ、セキュリティ属性などの関連リソースを含みます。プロセスはLinuxオペレーティングシステムの基盤であり、複数のプログラムを同時に実行するマルチタスクを可能にします。
Linuxで実行中のすべてのプロセスを一覧表示するには?
すべてのプロセスを表示するには、ps
コマンドを適切なオプションで使用します:
ps -e
または
ps aux
リアルタイム表示には、top
や htop
コマンドを使用できます。
top
と htop
の違いは何ですか?
top
はコマンドラインツールで、システムプロセスとリソース使用状況をリアルタイムで表示します。一方、htop
は top
を拡張したもので、より使いやすく、インタラクティブなインターフェイスを提供します。htop
では、プロセスリストのスクロール、特定プロセスの検索、インターフェイス内でのプロセス終了が可能です。
特定のプロセスを名前で検索するには?
pgrep
コマンドを使用して、名前でプロセスを検索できます:
pgrep process_name
例えば、名前に "apache2" を含むプロセスを検索するには:
pgrep apache2
Linuxでプロセスを終了させるには?
プロセスを終了させるには、ps
や top
、pgrep
などのコマンドでプロセスID (PID) を特定し、kill
コマンドを使用します:
kill PID
デフォルトのシグナルで終了しない場合、-9
オプションを使用して強制終了できます:
kill -9 PID
プロセスの階層ツリーを表示するには?
プロセスの階層ツリーを表示するには、pstree
コマンドを使用します:
pstree
プロセスIDを含めて表示するには:
pstree -p
開いているファイルとそれを使用しているプロセスを一覧表示するには?
lsof
コマンドを使用すると、プロセスによって開かれているファイル情報を一覧表示できます。すべての開いているファイルを表示するには:
lsof
特定のファイルを使用しているプロセスを確認するには:
lsof /path/to/file
システムパフォーマンスを継続的に監視するには?
watch
コマンドを使用すると、指定したコマンドを定期的に実行してその出力を表示できます。例えば、2秒ごとにすべてのプロセスを監視するには:
watch ps -e
プロセスごとのCPU、メモリ、I/O使用量の詳細統計を表示するには?
pidstat
コマンドを使用すると、プロセスごとのCPU、メモリ、I/O使用量の詳細統計を表示できます。CPU使用量を表示するには:
pidstat
メモリ使用量を表示するには:
pidstat -r
I/O統計を表示するには:
pidstat -d
応答しないプロセスをどうすればよいですか?
応答しないプロセスがある場合、kill
コマンドでPIDを指定して終了を試みます。終了しない場合、kill -9
コマンドで強制終了します:
kill -9 PID
この操作がシステムや重要なタスクに悪影響を及ぼさないことを確認してください。