ls -l показывает размер файла 0 для файлов в /proc, но cat выводит содержимое

ls -l показывает размер файла 0 для файлов в /proc, но cat выводит содержимое
# cat /proc/version
Linux version 2.6.18-308.8.2.el5.028stab101.1 (root@rhel5-build-x64) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)) #1 SMP Sun Jun 24 20:25:35 MSD 2012
# ls -l /proc/version
-r--r--r-- 1 root root 0 Aug 22 10:07 /proc/version

Размер файла указан как 0, но у него есть содержимое. Как это работает?

Это потому, что /procэто какая-то виртуальная файловая система?

Какая команда может показать точный размер файлов в формате /proc?

решение1

Это потому, что вы находитесь в procфайловой системе. Подробнее см. начто такое procfs.

/proc/version, содержащий версию ядра Linux, номер дистрибутива, номер версии gcc (используется для сборки ядра) и любую другую соответствующую информацию, касающуюся версии работающего в данный момент ядра

Это не настоящие файлы. Это удобный способ показать информацию о процессе в виде иерархии файлов.


РЕДАКТИРОВАТЬ:

Я знаю, что это нереально, но что мне делать, если я хочу узнать его размер?

Вы не получаете его от ls, но вы можете попробовать использовать wc:

# wc -c /proc/version
138 /proc/version

Связанный контент