ホームページ  >  記事  >  運用・保守  >  Linux では proc とはどのようなファイル システムですか?

Linux では proc とはどのようなファイル システムですか?

青灯夜游
青灯夜游オリジナル
2023-03-15 11:31:061815ブラウズ

Linux では、proc は仮想ファイル システムであり、ファイルの一部を変更することでカーネルの実行ステータスを変更できるコントロール センターであり、カーネルによって提供されるクエリ センターでもあります。ユーザーは、システム、ハードウェア、および現在実行中のプロセスの情報を表示できます。 proc システムはメモリ上にのみ存在し、システムのカーネル データにアクセスするためのインターフェイスをファイル システムの形式で提供し、一部のファイルを変更することでカーネルの動作状態を変更できます。

Linux では proc とはどのようなファイル システムですか?

#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。

proc ファイル システムとは

proc は仮想ファイル システムと呼ばれ、一部のファイルを変更することでカーネルの動作を変更できるコントロール センターです。ファイル ステータス、これはカーネルによって提供されるクエリ センターでもあり、ユーザーはこれを使用して、システム ハードウェアと現在実行中のプロセスの情報を表示できます。

Linux の多くのツールのデータ ソースは、proc ディレクトリ内のコンテンツです。たとえば、lsmod コマンドは cat /proc/modules のエイリアスです。

Linux には特殊なタイプの擬似ファイル システムがあり、ptyfs、devfs、sysfs、procfs など、ファイル インターフェイスと統一された操作を使用してさまざまな機能を実行するために使用されます。 Procfs は、最も広く使用されている疑似ファイル システムの 1 つです。

ファイル システムという用語に関する限り、/proc ディレクトリは実際のファイル システムではなく、仮想ファイル システムであり、プロセス情報擬似ファイル システムとも呼ばれます。

proc によって配置されたデータは、システム カーネル、プロセス、外部デバイスのステータス、ネットワーク ステータスなど、すべてメモリ内にあります。このディレクトリ内のデータはメモリ内にあるため、ハード ディスクのスペースを占有しません。

procfs は、Linux カーネル情報の抽象ファイル インターフェイスであり、多数のカーネル情報と調整可能なパラメータが通常のファイルとしてディレクトリ ツリーにマッピングされているため、echo または cat を簡単かつ直接的に使用できます。コマンドは、システム情報を取得および調整するために使用されます。同時に、procfs は、独自のカーネル モジュールまたはユーザー モード プログラムが procfs を介してパラメータを転送できるようにするインターフェイスも提供します。今日の Linux システムでは、多数のシステム ツールも ps、lspci などの procfs を通じてカーネル パラメータを取得します。procfs がないと、それらは正しく動作しない可能性があります。

proc ファイル システムは疑似ファイル システムであり、メモリ内にのみ存在し、外部メモリ領域を占有しません。ファイル システムの形式でシステム カーネル データにアクセスするためのインターフェイスを提供します。ユーザーとアプリケーションは、proc を通じてシステム情報を取得し、カーネルの特定のパラメーターを変更できます。プロセスなどのシステム情報は動的に変化するため、ユーザーまたはアプリケーションが proc ファイルを読み取ると、proc ファイル システムはシステム カーネルから必要な情報を動的に読み取り、送信します。

Linux proc ファイル システムの詳細な説明

Linux システムの /proc ディレクトリはファイル システム、つまり proc ファイルです。システム。他の一般的なファイル システムとは異なり、/proc は疑似ファイル システム (つまり、仮想ファイル システム) です。メモリ内にのみ存在し、外部メモリ領域を占有しません。ファイル システムを使用して、システム カーネル データにアクセスします。操作は次のとおりです。現在のカーネルの実行ステータスを保存する一連の特別なファイルを保存するインターフェイス)、ユーザーはこれらのファイルを使用して、システム ハードウェアおよび現在実行中のプロセスに関する情報を表示したり、これらのファイルの一部を変更することでカーネルの実行ステータスを変更したりすることもできます。ファイル。

PID

ディレクトリ。現在システムで実行されている各プロセスには、/proc 内に対応するディレクトリがあります。プロセスの PID 番号がディレクトリ名として使用されます。

  • attr

    ディレクトリ。 security 関連する属性は読み取り可能および書き込み可能です。SELinux などのセキュリティ モジュールをサポートするには、CONFIG_SECURITY を設定する必要があります。

  • ##current

    ファイル、現在のセキュリティ関連の属性。

  • exec

    ファイル、execve コマンドの実行時に設定されるセキュリティ関連の属性。

  • fscreate

    ファイル、コマンド実行時に設定されるセキュリティ関連の属性 open、mkdir、symlink、mknod。

  • keycreate

    ファイル、コマンド add_key の実行時に設定されるセキュリティ関連の属性。

  • prev

    ファイル、コマンド execve が最後に実行されたときのセキュリティ関連の属性、つまり前の「/proc/[pid]/attr/current」。

  • sockcreate

    ファイル。ソケットの作成時に設定されるセキュリティ関連の属性。

  • #autogroup ファイルを使用して、自動グループに割り当てられる CPU 帯域幅を変更できます。これは、「nice」範囲に数値を書き込み、自動グループ化の nice 値を設定することによって行われます。値の範囲は 19 (優先度が低い) ~ -20 (優先度が高い) です。 (この範囲外の値を書き込むと、write(2) がエラー EINVAL で失敗します。)

  • auxv

    ファイル、ELF インタープリタ情報、形式は unsigned long 型 ID と unsigned long 型値です。最後に 2 つの 0 (man getauxval)。

  • cgroup

    ファイル、プロセスが属するコントロール グループ。形式はコロンで区切られた 3 つのフィールドです。 、それぞれ構造 ID、サブシステム、制御グループ、CONFIG_CGROUPS を構成する必要があります。

  • clear_refs

    ファイル、書き込み専用、プロセスの所有者のみが使用、メモリ推定のためにクリアPG_Referenced および ACCESSED/YOUNG の量には 4 つの戦略 1、2、3、および 4 があります。1 は関連するすべてのページをクリアすることを意味し、2 は関連する匿名ページをクリアすることを意味し、3 は関連するマッピング ファイル ページをクリアすることを意味し、4 は関連するページをクリアすることを意味しますソフト ダーティ ページの場合は、CONFIG_PROC_PAGE_MONITOR を設定する必要があります。

  • cmdline

    ファイル (読み取り専用) は、プロセスを開始するための完全なコマンド ライン文字列を保存します。はゾンビ プロセスであるため、このファイルは空です。

  • comm

    ファイル、プロセスのコマンド名、別のスレッド (man clone prctl pthread_setname_np) は異なる場合がありますスレッド名は「task/[tid]/comm」にあり、TASK_COMM_LENを超える場合は切り捨てられます。

  • coredump_filter

    ファイル、00000037 (man core) などのコアダンプ フィルタ、異なるバイナリ ビットがフィルタリングを表す情報。

  • cpuset

    ファイル、CPU とメモリを制御するノード (man cpuset)。

  • cwd -> /

    ディレクトリ、現在の作業ディレクトリへのシンボリック リンク。

  • #environ

    ファイル、環境変数。

  • exe

    ファイル。プロセスを開始するための完全なコマンドにシンボリックリンクされています。 q

  • fd

    ディレクトリ。現在の fd が含まれます。これらの fd は、実際に開いているファイルへのシンボリック リンクです。

  • fdinfo

    ディレクトリには、現在の fd に関する情報が含まれています。fd の種類が異なれば、情報も異なります。

  • gid_map

    ファイル、ユーザー名前空間 (man user_namespaces) からマップされたグループ ID に関する情報。

  • #ioファイル、IO 情報。

  • limitsファイル、リソースのソフト制限とハード制限 (man getrlimit)。

  • loginuid ファイルを使用すると、監査デーモンによりカーネル内の監査ツールが有効になります。カーネルで監査が有効になる前に実行されているプロセスは、loginuid 4294967295 を取得します。

    4294967295 は (符号なしロング) -1 です。 -1 は、loginuid が設定されていないことを意味します。これは、ログイン プロセス (デーモンなど) によって生成されないプロセスの通常の動作です。 loginuid のデフォルトは -1 です。(tty/in DM/ssh 経由で) ログインするたびに、pam_loginuid モジュールによってユーザー ID が変更され、その値は子プロセスによって保持されます。


  • map_files いくつかのメモリ マップ ファイル (man mmap) を含むディレクトリ。ファイル名の形式は BeginAddress- です。 EndAddress 、マップされたファイルへのシンボリック リンクは CONFIG_CHECKPOINT_RESTORE で構成する必要があります。

  • #mapsファイル、メモリ マッピング情報。

  • mem ファイルは、open、read、lseek を通じてプロセスのメモリ ページにアクセスするために使用されます。

  • mountinfoファイル、マウント情報、形式は 44 41 253:1 // rw,relatimeshared : 35 master:1 - ext4 /dev/vda1 rw,data=owned, with space as separators. 各フィールドの意味は、左から右へ、一意のマウント ID、親マウント ID、およびデバイスのマスター/スレーブ番号です。ファイル システム。、ファイル システムにマウントされたルート ノード、プロセス ルート ノードに相対的なマウント ポイント、マウント権限およびその他のマウント構成、オプション構成、ダッシュは前のオプション構成の終わりを示します、ファイル システム タイプ、ファイル システム固有取り付けソースは、何もなくてもよいし、追加の構成であってもよい。

  • mounts現在のプロセスにマウントされているファイル、ファイル システム リスト、 /dev/vda1/ext4 rw 、 relatime,data=owned 0 0 フォーマット参照 (man fstab)。

  • #mountstats

    ファイル、マウント情報、形式は、デバイス /dev/vda1 が / に fstype ext4 でマウントされています[統計]。

  • net

    ディレクトリ。プロセスのネットワーク関連のファイルとディレクトリを保存します。

  • ns

    ディレクトリには、各名前空間のエントリが保存されます。詳細については、(man 名前空間) を参照してください。

  • uma_maps

    ファイル、uma は Non Uniform Memory Access です。詳細については、(man uma) を参照してください。

  • oom_adj

    ファイルで、OOM スコアを調整します。OOM はメモリ不足です。OOM が発生すると、OOM Killer は、OOM スコアに基づいてスコアの高いプロセスを強制終了します。デフォルト値は 0 で、親プロセスの設定を継承します。

  • oom_score

    ファイル、OOM スコア。

  • ##oom_score_adj

    ファイルでは、OOM スコアの範囲は -1000 から 1000 です。

  • pagemap

    ファイル (現在のプロセスの仮想メモリ ページ マッピング情報) は、CONFIG_PROC_PAGE_MONITOR で設定する必要があります。

  • #personality ファイルにより、プロセス パーソナリティ フラグが /proc に表示されるようになります。プロセスの個性は機密である可能性があるため (READ_IMPLIES_EXEC など)、このファイルはプロセス所有者のみが読み取ることができます。

  • projid_map ファイルは、ユーザーおよびグループ ID マッピングと同様に、ユーザー名前空間のプロジェクト ID マッピングを作成できます。 (項目 ID はディスク クォータに使用されます。setquota(8) および quoteactl(2) を参照してください。)

  • patch_state このファイルには各タスクのパッチ ステータス値が公開されており、ユーザーはどのタスクがパッチ操作の完了を妨げているかを判断できます。

  • ##root -> / ディレクトリは、現在のプロセスのルート ディレクトリにリンクされています。

  • ##sched

    ファイル、スケジュール統計およびプロセスのステータス情報。

  • #schedstat
  • ファイル、プロセスのスケジュール情報。

    #sessionid
  • ファイル、プロセス セッション ID、デフォルトは 4294967295。

    setgroups
  • ファイル (ユーザー名前空間にプロセス PID を含むプロセスが setgroups( 2) システムコール、/proc/[pid]/setgroups ファイルには文字列「allow」が表示されます。ユーザー名前空間で setgroups(2) が許可されていない場合は、「deny」が表示されます。 /proc/[pid]/setgroups ファイルの値に関係なく (およびプロセスの機能に関係なく)、/proc/[pid]/gid_map が設定されていない場合、setgroups(2) の呼び出しは許可されないことに注意してください。

    smaps
  • ファイル、メモリ マッピング情報は、pmap コマンドと同様に、CONFIG_PROC_PAGE_MONITOR を構成する必要があります。

    stack
  • ファイル (カーネル空間の関数呼び出しスタック) は、CONFIG_STACKTRACE で設定する必要があります。

    #stat

  • ファイル、プロセス ステータス情報、ps コマンドで使用されます。

    #statm

  • ファイル、プロセスメモリ使用量情報、スペースで区切られた 7 つの数字、左から右へ、それぞれを表しますプログラムの合計サイズ、常駐メモリ サイズ、共有メモリ ページ サイズ、テキスト コード、ライブラリ、データ スタック、およびダーティ ページ。
  • #status

    ファイル、読み取り可能なプロセス関連情報。
  • syscall

    ファイル (システム コール関連情報) で、CONFIG_HAVE_ARCH_TRACEHOOK を構成する必要があります。
  • task

    ディレクトリ。スレッドごとに 1 つのサブディレクトリ。ディレクトリ名はスレッド ID です。
  • timers

    ファイル、POSIT タイマー リスト (タイマー ID、信号、その他の情報を含む)。
  • #uid_map

    ファイル、ユーザー ID マッピング情報。

  • wchan

    ファイル、プロセスがスリープしているときのカーネル内の対応する場所のシンボリック表現。 do_wait として。

  • #acpi/wakeup

    ファイル、デバイスのウェイクアップ操作。

#buddyinfo ファイル。メモリの断片化の問題を診断するために使用されます。

#bus ディレクトリ、インストールされたバス。

#input/devices ファイルにデバイス情報を入力します。

    #input/handlers
  • ファイル、ハンドル情報。

    pci/00/00.0-08.0
  • ファイル、PCI ソケット情報。

    pci/devices
  • ファイル、pci デバイス情報。

  • cgroups
  • cgroups 情報の概要、フィールド subsys_name 階層 num_cgroups が有効になりました。

  • cmdline

ファイル、システムの起動時に Linux カーネルに渡されるパラメータ (lilo、grub、および他のブート管理モジュール。

consoles

ファイルを使用すると、システム コンソール /dev/console で現在使用されているデバイス行文字を表示できます。 /proc/console ファイルを表示します。

cpuinfo

ファイル、CPU、およびシステム アーキテクチャ情報を表示します。lscpu を使用します。このファイルにコマンドを実行します。

#crypto

ファイル。カーネル暗号化 API によって提供される暗号化リスト。

#devices ファイル、デバイス関連の情報。

#diskstatsファイル、ディスクのステータス。

dma ファイル、dma は Direct Memory Access です。

#ドライバー

ファイル、実行ドメインのリスト。 #fb

ファイル、フレームバッファ情報、CONFIG_FB を設定する必要があります。 filesystems

ファイル、カーネルによってサポートされるファイル システム タイプ (man ファイルシステム)。 #fs

ディレクトリ、マウントされたファイル システム情報。

#interrupts

ファイル、各 CPU の各 IO の割り込み情報。 irq番号、各CPUのirq処理回数、割り込みコントローラ名、irq名、ドライバがirqを登録する際に使用する名前が順に表示されます。

#iomem

ファイル、IO メモリ マッピング情報。

#ioports ファイル、IO ポート情報。

irq ディレクトリに、次のコマンドを実行すると、登録された各 irq の名前として irq 番号を持つサブタイトルが作成されます。 。 目次。

kallsyms ファイル。ダイナミック リンクとモジュールにバインドされたシンボル定義に使用されます。

kcore ファイル、システム内の ELF 形式の物理メモリ。

keys ファイルは、読み取りスレッドが表示する権限を持つキーのリストを公開し、各キーに関する情報を提供します。各キーのさまざまな情報。スレッドは、このファイルに表示されるキーを所有する必要はありません。

key-users システム上に少なくとも 1 つのキーを持つすべてのユーザーをリストするファイル。 ID。

kmsg ファイル、カーネル ログ情報。このファイルは dmsg コマンドによって使用されます。

kpagecount ファイル (各物理ページ フレームがマップされる回数) は、CONFIG_PROC_PAGE_MONITOR で構成する必要があります。

kpageflags ファイル (各物理ページ フレームのマスク) は、CONFIG_PROC_PAGE_MONITOR で構成する必要があります。

loadavg ファイル、現在のシステム負荷。

#locksFile、現在のファイル ロック ステータス。

mdstat ファイル、仮想デバイス情報 (ソフト RAID など)。

meminfo ファイル、システム メモリ使用量統計。このファイルは無料コマンドで使用されます。

misc# ファイル、他の主要なデバイス (デバイス番号 10) に登録されているドライバー。

modules ファイル、システムによってロードされたモジュール情報。関連するコマンドは lsmod です。

mounts -> self/mounts

ファイル、/self/mounts にリンクされています。

mtrr

ファイル、メモリ タイプ範囲レジスタ。

net -> self/net

ネットワーク擬似ファイル システムに関連するディレクトリ。

pagetypeinfo

ファイル、その他のページ アロケータ情報。

#partitions

ファイル、パーティション情報。

sched_debug

ファイル、スケジューラのデバッグ情報。

#schedstat ファイル、スケジューラ情報。

#scsi ディレクトリ、SCSI インターフェイス デバイス。

self -> 22699 ディレクトリ、現在のプロセスが配置されているディレクトリにリンクされています。

#slabinfo ファイル、カーネル キャッシュ情報、CONFIG_SLAB を設定する必要があります。

#softirqs

ファイル、システム ソフト割り込み情報。

stat

ファイル、システム、およびカーネルの統計。

swaps

ファイル、スワップ パーティションの使用法。

#sys

ディレクトリ、システム変数関連の情報。

sysrq-trigger

書き込み可能なファイルで、システム コールをトリガーします。

sysvipc

ディレクトリには、System V IPC オブジェクトである msg、sem、shm の 3 つのファイルが含まれています。

timer_list

ファイル、まだ実行中のタイマーのリスト。

timer_stats

ファイル、タイマーのステータス。

#tty

ディレクトリ、tty デバイス関連。

uptime

ファイル、システムの更新時間、プロセスのアイドル時間。 #version

ファイル、カーネルのバージョン情報。 #vmallocinfo

ファイル、仮想メモリ割り当て情報。

vmstat

ファイル、メモリ統計。キーと値のペアの形式で表示されます。

#zoneinfo

ファイル、メモリ ブロック情報。仮想メモリの動作を分析するために使用されます。

関連する推奨事項: 「Linux ビデオ チュートリアル

以上がLinux では proc とはどのようなファイル システムですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。