Почему размер /proc/stat показывает ноль? [дубликат]

grep -A1 "<active>" *.xml

A1 -> распечатать шаблон и следующую строку.

1
10.03.2019, 06:36
3 ответа

proc - виртуальная файловая система, отображающая имена файлов во внутренние структуры / переменные Linux; так что нормально / proc / stat имеет 0 байтов.

Из википедии: procfs

Файловая система proc (procfs) - это специальная файловая система в Unix-подобных операционных системах, которая представляет информацию о процессах и другую системную информацию в виде иерархическая файловая структура, предоставляющая более удобный и стандартизированный метод для динамического доступа к данным процесса, хранящимся в ядре, чем традиционные методы трассировки или прямой доступ к памяти ядра. Обычно он отображается на точку монтирования с именем / proc во время загрузки. Файловая система proc действует как интерфейс для внутренних структур данных в ядре. Его можно использовать для получения информации о системе и для изменения определенных параметров ядра во время выполнения (sysctl).

Из TLDP Иерархия файловой системы Linux: / proc

Самая отличительная черта файлов в этом каталоге - это тот факт, что все они имеют размер файла 0, за исключением kcore , mtrr и self.

Примечание. На самом деле на моих серверах только mtrr и self имеют нулевой размер - kcore - это память, к которой вы можете обращаться, то есть адреса виртуальной памяти ядра, следовательно, 128 ТБ. Также к этому обсуждению относится то, что / proc / kcore не реализуется в архитектурах MIPS и ARM.

4
27.01.2020, 23:11

Это потому, что это виртуальный файл, который не имеет заранее определенного известного размера, фактический размер, т.е. объем возвращаемых данных, будет зависеть от того, когда вы его читаете. .

Некоторые файлы / proc могут иметь ненулевой размер, потому что он известен заранее.

   /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 ТБ ОЗУ на моей машине, указанное значение и размер, который может быть прочитан, не соответствуют документации:

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

/proc - это специальная файловая система. Это не то, в чем вы храните файлы. Это виртуальная файловая система, я знаю, что это неправильная аналогия, но считайте ее чем-то вроде драйвера устройства в вашем каталоге /dev. То, что вы записываете в файлы в /dev, передается системе определенным образом. Аналогично, когда вы читаете из файла, он получает эти значения из системы. Следовательно, поскольку в этих файлах нет никакой реальной хранимой информации, размер отображается как ноль.

4
27.01.2020, 23:11

Теги

Похожие вопросы