sysfs
имеет смысл - он представляет систему и смонтирован в соответствии с /dev
. procfs
, который устанавливается на /proc
, однако, гораздо более туманный. Что такое procfs
& amp; /proc
используется для?
Исторически (за годы до Linux), /proc
появился первым и содержал один файл на процесс. Каждый (псевдо) -файл предоставлял доступ к памяти процесса, например, чтение байта с номером 0x1234 из файла давало вам содержимое адреса 0x1234 в виртуальной памяти процесса. Этот интерфейс использовался такими командами, как ps
(оригинальный просмотрщик информации о процессе) и отладчиками.
Последующие варианты Unix копировали принцип, но не детали. Например, в Linux существует один каталог на процесс, содержащий различную информацию в удобочитаемой форме. Например, /proc/1/cwd
является символической ссылкой на текущий рабочий каталог процесса 1, а /proc/1/cmdline
является файлом, содержащим аргументы командной строки.
Поскольку он был там, Linux также использовал /proc
для предоставления системной информации, такой как /proc/cpuinfo
, содержащий информацию о ЦП (микропроцессор), и /proc/bus/usb/
, содержащий информацию об USB-устройствах. Документация /proc
находится в документации ядра в filesystems/proc.txt
.
Позже, /sys
(файловая система sysfs
) пришла, чтобы предоставить информацию о ядре. Например, есть информация об USB-устройствах в /sys/bus/usb
(в другом формате, чем /proc/bus/usb
), и информация о модулях ядра (а также интерфейсах для управления некоторыми модулями) в /sys/modules
.
Обратите внимание, что /proc/sys
не то же самое, что /sys
. /proc/sys
показывает определенный набор параметров ядра, конфигурируемых во время выполнения, называемых sysctl parameters .
Более подробную и актуальную информацию о вы найдете в Википедии .
¹ или, точнее, файловая система proc
, которая может быть смонтирована в других местах (но не имея ее в /proc
, сломает много программ).
Небольшое отклонение от некоторых ответов.
/proc
представляет собой представление файловой системы текущих запущенных процессов. Вы никуда не уходите, если вы можете читать файлы, вы можете взаимодействовать с ядром. procfs
это просто реализация этого.
Философия здесь такова: используйте маленькие инструменты, такие как grep и friends, чтобы взаимодействовать с такими вещами, как процессы, а не писать специальные инструменты для взаимодействия с процессами.
procfs представляет информацию о ваших запущенных процессах.
Например:
$ sleep 120 &
[2] 11581
$ ls /proc/11581
...
cmdline
cwd
...
$ cat /proc/11581/cmdline
sleep120
/proc
это API-интерфейс ядра в реальном времени. Вы можете установить переменные ядра или получить информацию о ядре. procfs аналогично симуляции файловой системы, чтобы иметь возможность общаться с ядром через файловую систему.
Каждый процесс имеет свой собственный каталог в /proc
с идентификатором процесса в качестве имени. В этом каталоге вы можете найти всю информацию, которую ядро имеет для конкретного процесса.
Другие каталоги позволяют либо получать статистику ядра (например, /proc/meminfo
), либо информацию (например, /proc/cpuinfo
), либо вы можете настроить определенные вещи (например, /proc/sys/vm/swappiness
позволяет вам изменить способ использования ядром свопа пространство).