Linux でプロセスが実行中かどうかを確認する方法

LinuxBeginner
オンラインで実践に進む

はじめに

この実験では、プロセスの管理と監視に必要な基本的な 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 12345zsh コマンドに対応していることが確認できます。

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 とメモリの消費を観察することができます。