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/kcore
MIPSおよびARMアーキテクチャでは実装されていない問題です。
答え3
/proc
特殊なファイルシステムです。ファイルを保存する場所ではありません。これは仮想ファイルシステムです。これが正しい例えではないことはわかりますが、ディレクトリのデバイスドライバと考えてください/dev
。ファイルに書き込まれた内容は、/dev
何らかの方法でシステムに渡されます。同様に、ファイルを読み取ると、システムはこれらの値を抽出します。したがって、これらのファイルには実際の情報が格納されていないため、サイズはゼロで表示されます。