/proc/statのサイズが0で表示されるのはなぜですか? [コピー]

/proc/statのサイズが0で表示されるのはなぜですか? [コピー]
ls -rlth /proc/stat
-r--r--r-- 1 root root 0 Feb 21 04:25 /proc/stat

そうしてもcat内容は十分です。

答え1

事前定義された既知のサイズがない仮想ファイルであるため、実際のサイズ、つまり返されるデータの量は、読み取る時点によって異なります。

いくつかの/procファイルはあらかじめ知られているので、null以外のサイズを持つことができます。

   /proc/kcore
          This  file  represents the physical memory of the system and is stored in the ELF core file for-
          mat.  With this pseudo-file, and an unstripped kernel (/usr/src/linux/vmlinux) binary,  GDB  can
          be used to examine the current state of any kernel data structures.

          The total length of the file is the size of physical memory (RAM) plus 4KB.

ただし、マイコンピュータに128 TBのRAMがないため、報告された値と可能な読み取りサイズはドキュメントと一致しません。

$ ls -lh /proc/kcore
-r--------. 1 root root 128T Feb 23 16:10 /proc/kcore

答え2

procはファイル名を内部Linux構造/変数にマップする仮想ファイルシステムなので、/proc/statのバイトがゼロであることが一般的です。

ウィキペディアから:プロセスファイルシステム

proc ファイルシステム (procfs) は Unix 系オペレーティングシステムの特殊ファイルシステムで、プロセスに関する情報やその他のシステム情報を階層ファイル形式構造で提供し、カーネルに格納されたプロセスデータに動的にアクセスする方法を提供します。従来のトレース方法やカーネルメモリへの直接アクセスよりも優れています。通常、起動時に/ procというマウントポイントにマッピングされます。 procファイルシステムは、カーネルの内部データ構造へのインタフェースとして機能します。システムに関する情報を取得し、実行時に特定のカーネルパラメータ(sysctl)を変更するために使用できます。

TLDPからLinuxファイルシステム層:/ proc

このディレクトリのファイルの最も顕著な特徴は、kcore、mtrr、selfを除くすべてのファイルのファイルサイズが0であることです。

注:実際には、私のサーバーでは、mtrrとselfのみがゼロです。 kcore はアドレスを指定できるメモリ、つまりカーネル仮想メモリアドレスなので、128TB です。さらに、この議論に関連するのは、/proc/kcoreMIPSおよびARMアーキテクチャでは実装されていない問題です。

答え3

/proc特殊なファイルシステムです。ファイルを保存する場所ではありません。これは仮想ファイルシステムです。これが正しい例えではないことはわかりますが、ディレクトリのデバイスドライバと考えてください/dev。ファイルに書き込まれた内容は、/dev何らかの方法でシステムに渡されます。同様に、ファイルを読み取ると、システムはこれらの値を抽出します。したがって、これらのファイルには実際の情報が格納されていないため、サイズはゼロで表示されます。

関連情報