1文字を含むファイルに対してls -lを実行すると、ファイルサイズは2Bとして表示されます。ファイルシステムが4kブロックの場合、ファイルをブロックサイズに丸めるとしますか? ls -lは実際にinodeからバイト数を読み取るためですか?どのような状況で、Linux 2.6カーネルGNUユーティリティでブロック回答を実際のバイト回答に丸めますか?
ベストアンサー1
echo a > file
orを使用してこの1つの文字をファイルに入れたようですvim file
。これは、対応する文字と追加の改行(2文字、したがって2バイト)を持つことになるという意味です。 ls -l
ファイルサイズをブロックではなくバイト単位で表示します(具体的にはfile長さ):
$ echo a > testfile
$ ls -l testfile
-rw-r--r-- 1 user user 2 Apr 28 22:08 testfile
$ cat -A testfile
a$
(改行文字は文字cat -A
で表示されます。)$
以下と比較して、ディスクが占める実際のサイズを表示しますls -l
。du
$ du testfile
4
(実際にdu
サイズは1kiB単位で表示されるので、ここのサイズは4×1024バイト=4096バイト=4kiB、つまりこのファイルシステムのブロックサイズです。)
これを表示するには、次の代わりに/追加でls
このオプションを使用する必要があります。-s
-l
$ ls -ls testfile
4 -rw-r--r-- 1 user user 2 Apr 28 22:08 testfile
最初の列は割り当てサイズ(1kiB単位)です。最後に、これを指定して変更できます--block-size
。
$ ls -ls --block-size=1 testfile
4096 -rw-r--r-- 1 aw aw 2 Apr 28 22:08 testfile