Linux では、proc は仮想ファイル システムであり、ファイルの一部を変更することでカーネルの実行ステータスを変更できるコントロール センターであり、カーネルによって提供されるクエリ センターでもあります。ユーザーは、システム、ハードウェア、および現在実行中のプロセスの情報を表示できます。 proc システムはメモリ上にのみ存在し、システムのカーネル データにアクセスするためのインターフェイスをファイル システムの形式で提供し、一部のファイルを変更することでカーネルの動作状態を変更できます。
#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。
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 ディレクトリはファイル システム、つまり proc ファイルです。システム。他の一般的なファイル システムとは異なり、/proc は疑似ファイル システム (つまり、仮想ファイル システム) です。メモリ内にのみ存在し、外部メモリ領域を占有しません。ファイル システムを使用して、システム カーネル データにアクセスします。操作は次のとおりです。現在のカーネルの実行ステータスを保存する一連の特別なファイルを保存するインターフェイス)、ユーザーはこれらのファイルを使用して、システム ハードウェアおよび現在実行中のプロセスに関する情報を表示したり、これらのファイルの一部を変更することでカーネルの実行ステータスを変更したりすることもできます。ファイル。
ディレクトリ。現在システムで実行されている各プロセスには、/proc 内に対応するディレクトリがあります。プロセスの PID 番号がディレクトリ名として使用されます。
ディレクトリ。 security 関連する属性は読み取り可能および書き込み可能です。SELinux などのセキュリティ モジュールをサポートするには、CONFIG_SECURITY を設定する必要があります。
#autogroup ファイルを使用して、自動グループに割り当てられる CPU 帯域幅を変更できます。これは、「nice」範囲に数値を書き込み、自動グループ化の nice 値を設定することによって行われます。値の範囲は 19 (優先度が低い) ~ -20 (優先度が高い) です。 (この範囲外の値を書き込むと、write(2) がエラー EINVAL で失敗します。)
ファイル、ELF インタープリタ情報、形式は unsigned long 型 ID と unsigned long 型値です。最後に 2 つの 0 (man getauxval)。
ファイル、プロセスが属するコントロール グループ。形式はコロンで区切られた 3 つのフィールドです。 、それぞれ構造 ID、サブシステム、制御グループ、CONFIG_CGROUPS を構成する必要があります。
ファイル、書き込み専用、プロセスの所有者のみが使用、メモリ推定のためにクリアPG_Referenced および ACCESSED/YOUNG の量には 4 つの戦略 1、2、3、および 4 があります。1 は関連するすべてのページをクリアすることを意味し、2 は関連する匿名ページをクリアすることを意味し、3 は関連するマッピング ファイル ページをクリアすることを意味し、4 は関連するページをクリアすることを意味しますソフト ダーティ ページの場合は、CONFIG_PROC_PAGE_MONITOR を設定する必要があります。
ファイル (読み取り専用) は、プロセスを開始するための完全なコマンド ライン文字列を保存します。はゾンビ プロセスであるため、このファイルは空です。
ファイル、プロセスのコマンド名、別のスレッド (man clone prctl pthread_setname_np) は異なる場合がありますスレッド名は「task/[tid]/comm」にあり、TASK_COMM_LENを超える場合は切り捨てられます。
ファイル、00000037 (man core) などのコアダンプ フィルタ、異なるバイナリ ビットがフィルタリングを表す情報。
ファイル、CPU とメモリを制御するノード (man cpuset)。
ディレクトリ、現在の作業ディレクトリへのシンボリック リンク。
#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 で構成する必要があります。
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)。
ファイル、マウント情報、形式は、デバイス /dev/vda1 が / に fstype ext4 でマウントされています[統計]。
ファイル、uma は Non Uniform Memory Access です。詳細については、(man uma) を参照してください。
ファイル、OOM スコア。
#personality ファイルにより、プロセス パーソナリティ フラグが /proc に表示されるようになります。プロセスの個性は機密である可能性があるため (READ_IMPLIES_EXEC など)、このファイルはプロセス所有者のみが読み取ることができます。
projid_map ファイルは、ユーザーおよびグループ ID マッピングと同様に、ユーザー名前空間のプロジェクト ID マッピングを作成できます。 (項目 ID はディスク クォータに使用されます。setquota(8) および quoteactl(2) を参照してください。)
patch_state このファイルには各タスクのパッチ ステータス値が公開されており、ユーザーはどのタスクがパッチ操作の完了を妨げているかを判断できます。
ファイル (ユーザー名前空間にプロセス 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
ファイル、ユーザー ID マッピング情報。
ファイル、プロセスがスリープしているときのカーネル内の対応する場所のシンボリック表現。 do_wait として。
#buddyinfo ファイル。メモリの断片化の問題を診断するために使用されます。
#bus ディレクトリ、インストールされたバス。
#input/devices ファイルにデバイス情報を入力します。
ファイル、システムの起動時に Linux カーネルに渡されるパラメータ (lilo、grub、および他のブート管理モジュール。
ファイルを使用すると、システム コンソール /dev/console で現在使用されているデバイス行文字を表示できます。 /proc/console ファイルを表示します。 ファイル、CPU、およびシステム アーキテクチャ情報を表示します。lscpu を使用します。このファイルにコマンドを実行します。 #diskstatsファイル、ディスクのステータス。 dma ファイル、dma は Direct Memory Access です。 ファイルは、PC および Ataris のリアルタイム クロックの不揮発性メモリへのアクセスを提供します。 PC では、これは通常 CMOS メモリと呼ばれ、BIOS 構成オプションを保存します。 ファイル、実行ドメインのリスト。 #fb ファイル、フレームバッファ情報、CONFIG_FB を設定する必要があります。 filesystems ファイル、カーネルによってサポートされるファイル システム タイプ (man ファイルシステム)。 #fs ファイル、各 CPU の各 IO の割り込み情報。 irq番号、各CPUのirq処理回数、割り込みコントローラ名、irq名、ドライバがirqを登録する際に使用する名前が順に表示されます。 irq ディレクトリに、次のコマンドを実行すると、登録された各 irq の名前として irq 番号を持つサブタイトルが作成されます。 。 目次。 kallsyms ファイル。ダイナミック リンクとモジュールにバインドされたシンボル定義に使用されます。 kcore ファイル、システム内の ELF 形式の物理メモリ。 keys ファイルは、読み取りスレッドが表示する権限を持つキーのリストを公開し、各キーに関する情報を提供します。各キーのさまざまな情報。スレッドは、このファイルに表示されるキーを所有する必要はありません。 key-users システム上に少なくとも 1 つのキーを持つすべてのユーザーをリストするファイル。 ID。 kmsg ファイル、カーネル ログ情報。このファイルは dmsg コマンドによって使用されます。 kpagecount ファイル (各物理ページ フレームがマップされる回数) は、CONFIG_PROC_PAGE_MONITOR で構成する必要があります。 kpageflags ファイル (各物理ページ フレームのマスク) は、CONFIG_PROC_PAGE_MONITOR で構成する必要があります。 #locksFile、現在のファイル ロック ステータス。 mdstat ファイル、仮想デバイス情報 (ソフト RAID など)。 meminfo ファイル、システム メモリ使用量統計。このファイルは無料コマンドで使用されます。 misc# ファイル、他の主要なデバイス (デバイス番号 10) に登録されているドライバー。 modules ファイル、システムによってロードされたモジュール情報。関連するコマンドは lsmod です。 ファイル、/self/mounts にリンクされています。 ファイル、メモリ タイプ範囲レジスタ。 ネットワーク擬似ファイル システムに関連するディレクトリ。 ファイル、その他のページ アロケータ情報。 #scsi ディレクトリ、SCSI インターフェイス デバイス。 self -> 22699 ディレクトリ、現在のプロセスが配置されているディレクトリにリンクされています。 #slabinfo ファイル、カーネル キャッシュ情報、CONFIG_SLAB を設定する必要があります。 #sys sysrq-trigger 書き込み可能なファイルで、システム コールをトリガーします。 sysvipc ディレクトリには、System V IPC オブジェクトである msg、sem、shm の 3 つのファイルが含まれています。 timer_list timer_stats ファイル、システムの更新時間、プロセスのアイドル時間。 #version ファイル、カーネルのバージョン情報。 #vmallocinfo ファイル、メモリ ブロック情報。仮想メモリの動作を分析するために使用されます。 関連する推奨事項: 「Linux ビデオ チュートリアル 」##nvram
以上がLinux では proc とはどのようなファイル システムですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。