ウェブサイト検索

/proc - Linux プロセスとハードウェア情報を取得します


今日は、/proc ディレクトリの内容を詳しく調べて、その機能について理解を深めます。 /proc ディレクトリは、そのフレーバーやアーキテクチャに関係なく、すべての Linux ディストリビューションに共通の機能であることに注意することが重要です。

すぐに明らかにしなければならない誤解の 1 つは、/proc ディレクトリは、用語の伝統的な意味での従来のファイル システムではないということです。

これは、procfs 内のプロセスおよびその他のシステム関連データに関する情報を含む仮想ファイル システムです。このファイル システムは /proc ディレクトリにマッピングされ、システムの起動プロセス中にマウントされます。

Linux の /proc とは何ですか

/proc ファイル システムは、カーネル データ構造とランタイム情報へのインターフェイスとして機能し、ユーザーとアプリケーションの両方がプロセス、システム構成、ハードウェアなどに関する詳細情報にアクセスする方法を提供します。このデータは、仮想ファイルの階層を通じて使用されます。

/proc ファイル システム内のファイルとディレクトリの完全なリストを表示するには、次のように ls コマンドを使用します。

ls /proc

Linux での /proc の移動

/proc ディレクトリに移動すると、いくつかの聞き覚えのあるファイルと、システム上で実行中のプロセスに対応する番号付きのディレクトリが多数あることに気づくでしょう。

cd /proc
ls

これらの番号付きディレクトリは、プロセス ID (PID) として知られるプロセスと、その中にあるプロセスを占有するコマンドを表します。ファイルには、メモリ (meminfo)、CPU 情報 (cpuinfo)、使用可能なファイルシステムなどのシステム情報が含まれています。

ここでは、遭遇する可能性のあるいくつかの主要なファイルとディレクトリを示します。

  • /proc/cpuinfo – モデル、速度、コア数など、システム上の CPU に関する情報を一覧表示します。
  • /proc/meminfo – メモリ使用量に関する詳細と、メモリの総量、空きメモリ、各プロセスで使用されているメモリを含む統計を一覧表示します。
  • /proc/filesystems – カーネルによってサポートされるすべてのファイルシステムのリストが含まれます。
  • /proc/sys – カーネルの構成パラメータと実行時パラメータをリストします。
  • /proc/loadavg – 1 分、5 分、15 分などのさまざまな時間間隔にわたるシステム負荷平均を表示します。
  • /proc/self – プロセス自体のディレクトリへのシンボリック リンク。
  • /proc/stat – 実行中のプロセスの数、割り込みの数、各 CPU 状態で費やされた時間など、システムに関するさまざまな統計が含まれます。
  • /proc/uptime – システムの稼働時間が含まれます。
  • /proc/PID – 特定のプロセスに関する情報が含まれます。PID はプロセス ID です。

システム情報の抽出

/proc/meminfo は、Linux システムのメモリ使用量と統計に関する情報を表示するために使用されます。これには、さまざまなメモリ関連メトリクスのスナップショットが含まれており、システム パフォーマンスとリソース使用率の監視に役立ちます。 。

cat /proc/meminfo

ご覧のとおり、/proc/meminfo には、使用可能な合計容量 (kb 単位) や上位 2 つの空き容量など、システムのメモリに関する大量の情報が含まれています。線。

/proc 内のいずれかのファイルに対して cat コマンドを実行すると、その内容が出力されます。ファイルに関する情報は、次のコマンドを実行するとマニュアル ページで確認できます。

man 5 /proc/<filename>

/proc の ファイルについて簡単に説明します。

  • /proc/cmdline – カーネル コマンド ライン情報。
  • /proc/console – tty を含む現在のコンソールに関する情報。
  • /proc/devices – 実行中のカーネル用に現在構成されているデバイス ドライバー。
  • /proc/dma – 現在の DMA チャネルに関する情報。
  • /proc/fb – フレームバッファデバイス。
  • /proc/filesystems – カーネルによってサポートされている現在のファイルシステム。
  • /proc/iomem – デバイスの現在のシステム メモリ マップ。
  • /proc/ioports – デバイスとの入出力通信用に登録されたポート領域。
  • /proc/loadavg – システム負荷平均。
  • /proc/locks – 現在カーネルによってロックされているファイル。
  • /proc/meminfo – システム メモリに関する情報 (上記の例を参照)。
  • /proc/misc – さまざまな主要デバイス用に登録されたさまざまなドライバー。
  • /proc/modules – 現在ロードされているカーネル モジュール。
  • /proc/mounts – システムで使用されているすべてのマウントのリスト。
  • /proc/partitions – システムで利用可能なパーティションに関する詳細情報。
  • /proc/pci – すべての PCI デバイスに関する情報。
  • /proc/stat – 前回の再起動から保存された記録またはさまざまな統計。
  • /proc/swap – スワップ領域に関する情報。
  • /proc/uptime – 稼働時間情報 (秒単位)。
  • /proc/version – カーネル バージョン、gcc バージョン、およびインストールされている Linux ディストリビューション。

プロセス情報の抽出

/proc の番号付きディレクトリ内に、 いくつかのファイルリンクがあります。これらのディレクトリの番号は、 ディレクトリ内で実行されているコマンドのPIDに相関していることに注意してください。

たとえば、/proc/ に移動すると、次のような詳細が表示されます。

  • /proc//cmdline – プロセスの開始に使用されるコマンドライン引数。
  • /proc//status – メモリ使用量やプロセス統計などの詳細なステータス情報。
  • /proc//fd – プロセスによって開かれたファイルへのシンボリック リンク。

/proc/12 というフォルダーを表示する例を使用してみましょう。

cd /proc/12
ls

私が実行した場合:

cat /proc/12/status

次のような結果が得られます。

それで、これは何を意味するのでしょうか?さて、重要な部分は上部にあります。ステータス ファイルから、このプロセスが rcu_tasks_rude_kthread に属していることがわかります。現在の状態はアイドルで、プロセスのIDは明らかに12です。

また、UIDGID0 であるため、これを実行しているユーザーもわかります。これは、このプロセスがルートに属していることを示しています。strong>ユーザー。

どの番号の付いたディレクトリにも同様のファイル構造があり、最も重要なファイル構造とその説明は次のとおりです。

  • cmdline – プロセスのコマンドライン
  • 環境 – 環境変数
  • fd – ファイル記述子
  • 制限 – プロセスの制限に関する情報が含まれます
  • マウント – 関連情報

番号付きディレクトリ内にいくつかのリンクがあることにも注目してください。

  • cwd – プロセスの現在の作業ディレクトリへのリンク
  • exe – プロセスの実行可能ファイルへのリンク
  • root – プロセスの作業ディレクトリへのリンク

これにより、/proc ディレクトリに慣れることができます。また、いくつか例を挙げると、uptime、lsof、mount、ps など、多くのコマンドが情報を取得する方法についての洞察も得られます。