はじめに
この実験では、プロセスの管理と監視に必要な基本的な Linux スキルを学びます。ps aux コマンドを使用してシステム上で実行中のすべてのプロセスをリストアップする方法を学びます。このコマンドは、ユーザー、PID、CPU およびメモリ使用量などの詳細情報を含む現在のプロセスのスナップショットを提供します。
さらに、pgrep コマンドを使用して特定のプロセスを効率的に検索する方法を学び、top コマンドを利用してリアルタイムのプロセス活動とリソース消費について理解を深めます。これらの技術は、システム管理、トラブルシューティング、およびシステムパフォーマンスの理解に不可欠です。
ps aux で実行中のプロセスをリストする
このステップでは、ps コマンドを使用して Linux システム上で現在実行中のプロセスを表示する方法を学びます。プロセスとは、単に実行中のプログラムのことです。プロセスをリストアップして識別する方法を理解することは、Linux システム管理とトラブルシューティングにおける基本的なスキルです。
ps コマンドは、現在のプロセスのスナップショットを報告するために使用されます。特定のオプションとともに使用すると、多くの詳細情報を提供することができます。
ps コマンドを aux オプションとともに使用しましょう。これらのオプションは、システム上で実行中のすべてのプロセスを使いやすい形式で表示するために一般的に一緒に使用されます。
a: すべてのプロセスを表示します。u: プロセスのユーザーと所有者を表示します。x: 制御端末を持たないプロセスを表示します(バックグラウンドプロセスを確認するのに便利です)。
ターミナルが開いていない場合は開きます。デフォルトでは ~/project ディレクトリにいるはずです。
次のコマンドを入力して Enter キーを押します。
ps aux
次のような長いプロセスのリストが表示されます(正確な出力は異なる場合があります)。
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 16840 9880 ? Ss Jul23 0:01 /sbin/init
root 2 0.0 0.0 0 0 ? S Jul23 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I< Jul23 0:00 [rcu_gp]
...
labex 12345 0.1 0.5 123456 54321 pts/0 Ss HH:MM 0:00 /usr/bin/zsh
labex 12367 0.0 0.1 21000 5000 pts/0 R+ HH:MM 0:00 ps aux
...
表示される列を分解してみましょう。
USER: プロセスの所有者であるユーザー。PID: プロセス ID。各実行中のプロセスに固有の番号。%CPU: プロセスが使用している CPU 時間の割合。%MEM: プロセスが使用している物理メモリの割合。VSZ: 仮想セットサイズ。プロセスが使用している仮想メモリの合計量。RSS: レジデントセットサイズ。プロセスが使用している物理メモリの量。TTY: プロセスの制御端末(ある場合)。?は制御端末がないことを意味します。STAT: プロセスの状態(例:実行中はR、スリープ中はS、ゾンビはZ)。START: プロセスが開始された時間。TIME: プロセスが使用した累積 CPU 時間。COMMAND: プロセスを開始したコマンド。
この出力をスクロールすると圧倒されるかもしれません。次のステップでは、この出力をフィルタリングして特定のプロセスを見つける方法を学びます。
続ける をクリックして進みましょう。
pgrep を使って特定のプロセスを見つける
前のステップで、ps aux が大量の出力を生成することを見ました。多くの場合、特定のプロセスを見つけるだけで済むことがあります。pgrep コマンドはこの目的のために設計されています。このコマンドは、プロセス名に基づいてプロセスを検索し、そのプロセス ID (PID) を返します。
pgrep の基本的な構文は pgrep [options] pattern です。pattern は通常、検索しているプロセスの名前です。
現在ターミナルで使用しているシェルである zsh プロセスの PID を見つけてみましょう。
次のコマンドを入力して Enter キーを押します。
pgrep zsh
ターミナルに 1 つまたは複数の数字が表示されるはずです。これらは実行中の zsh プロセスの PID です。
12345
(実際の数字はあなたの環境では異なります)
pgrep で見つけた PID に関連付けられた完全なコマンドを表示したい場合は、ps コマンドと組み合わせることができます。ps の -p オプションを使用すると、PID を指定できます。
zsh プロセスの PID を使って、その完全なコマンドを見つけてみましょう。まず、pgrep zsh を再度実行して現在の PID を取得します。この例では PID が 12345 であると仮定します(12345 を実際に取得した PID に置き換えてください)。
次に、ps -p の後に PID を指定します。
ps -p 12345
次のような出力が表示されます。
PID TTY TIME CMD
12345 pts/0 00:00:00 zsh
これにより、PID 12345 が zsh コマンドに対応していることが確認できます。
pgrep は、プロセス名がわかっている場合にその PID を素早く見つける方法です。これは、プロセスを終了させるなど、他のコマンドで PID が必要な場合に特に便利です(これについては将来の実験で学びます)。
続ける をクリックして次のステップに進みましょう。
top コマンドでプロセスの詳細を監視する
このステップでは、システム上で実行中のプロセスの動的なリアルタイムビューを提供する top コマンドについて学びます。ps aux がスナップショットを提供するのに対し、top は継続的に更新され、どのプロセスが最も多くの CPU とメモリを使用しているかを表示します。
top コマンドは、システムパフォーマンスを監視し、過剰なリソースを消費している可能性のあるプロセスを特定するのに非常に便利です。
ターミナルに次のコマンドを入力して Enter キーを押します。
top
ターミナルは、継続的に更新されるプロセスのリストを表示するように切り替わります。出力は次のようになります。
top - HH:MM:SS up X days, HH:MM, X users, load average: X.XX, X.XX, X.XX
Tasks: XXX total, X running, XXX sleeping, X stopped, X zombie
%Cpu(s): X.X us, X.X sy, X.X ni, XX.X id, X.X wa, X.X hi, X.X si, X.X st
MiB Mem : XXXX.X total, XXXX.X free, XXXX.X used, XXX.X buff/cache
MiB Swap: XXXX.X total, XXXX.X free, XXXX.X used. XXXX.X avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
12345 labex 20 0 123456 54321 32100 S 0.1 0.5 0:00.10 zsh
12367 labex 20 0 21000 5000 3000 R 0.0 0.1 0:00.05 top
...
top の出力の主要な部分を見てみましょう。
概要エリア(上部): このセクションは、システムの概要情報を表示します。以下の情報が含まれます。
- 現在の時刻とシステムの稼働時間。
- ログインしているユーザーの数。
- 負荷平均(過去 1、5、15 分間で実行待ちのプロセスの平均数)。
- タスク(プロセス)の総数とその状態(実行中、スリープ中、停止中、ゾンビ)。
- CPU 使用量の内訳(ユーザー、システム、アイドルなど)。
- メモリ使用量(合計、空き、使用中、バッファ/キャッシュ)。
- スワップ領域の使用量。
プロセスリストエリア(下部): このセクションは、個々のプロセスをリストし、デフォルトでは CPU 使用量でソートされます。列は
ps auxと似ていますが、topはそれらをリアルタイムで更新します。主要な列には以下が含まれます。PID: プロセス ID。USER: プロセスの所有者。%CPU: CPU 使用割合。%MEM: メモリ使用割合。COMMAND: コマンド名。
top が実行中の間、さまざまなキーを使用して操作することができます。
qを押すとtopを終了します。Mを押すと、プロセスリストをメモリ使用量でソートします。Pを押すと、プロセスリストを CPU 使用量でソートします(これがデフォルトです)。kを押すと、プロセスを終了させることができます(PID を入力するように促されます)。この操作には注意してください!
しばらく時間をかけて、プロセスと CPU およびメモリ使用量の変化を観察してみましょう。top プロセス自体がリストの上位に表示されることがわかるでしょう。なぜなら、表示を更新するために CPU を積極的に使用しているからです。
top の探索が終了したら、q を押して終了し、通常のターミナルプロンプトに戻ります。
続ける をクリックして、このステップと実験を完了します。
まとめ
この実験では、Linux でプロセスが実行中かどうかを確認する基本的な手法を学びました。まず、ps aux コマンドを使ってシステム上で実行中のすべてのプロセスをリストし、USER、PID、%CPU、%MEM などの様々な列を理解しました。これらの列は、プロセスの活動のスナップショットを提供します。
次に、pgrep コマンドを使って特定のプロセスを効率的に見つける方法を調べました。このコマンドは、プロセス名やその他の属性に基づいてプロセスを検索し、そのプロセス ID (PID) を返します。最後に、top コマンドを使ってプロセスの詳細をリアルタイムで監視する方法を学びました。このコマンドは、システムリソースの使用状況と個々のプロセスの統計情報を動的に表示し、CPU とメモリの消費を観察することができます。



