Каждый процесс имеет свою собственную таблицу дескрипторов файлов. Дескриптор файла 4 в точках процесса 1234 года в обрабатывает таблицу 1234. Дескриптор файла 4 в процессе 5 678 точек в обрабатывает таблицу 5678. Случай, с которым необходимо быть знакомы, является дескрипторами файлов 0, 1 и 2, которые для каждого процесса являются стандартным входом, стандартным выводом и стандартной погрешностью, указывая везде, где они были перенаправлены к.
Процесс может открыть тот же файл несколько раз. Это может произойти по совпадению, например, когда стандартный вывод процесса и стандартная погрешность перенаправляются к тому же терминалу или в тот же файл. Базовые записи таблицы файлов (например, Linux struct file
) несите больше, чем информация о файле; они также содержат вводные режимы (например, читайте или запишите), и другое состояние (такое как флаги, например, замыкаться-должностное-лицо). Например, процессу можно было бы открыть терминал для чтения только на дескрипторе файла 0 и том же самом терминале, открытом для записи только на дескрипторе файла 2. Записи таблиц файлов также содержат положение процесса в файле; процесс мог бы хотеть lseek
к двум различным позициям в том же файле, и использование - также dup
получить два дескриптора в тот файл.
lsmod
списки все загруженные модули, и имеют a Used by
столбец. Если это 0
для модуля A, затем никакой другой загруженный модуль не имеет зависимость от него.
Это не означает, что удаление модуля безопасно.
Нет никакого способа, которым я могу думать об этом, Вы могли определить, используется ли модуль. Модули драйвера устройства будут (обычно) увеличивать их Used by
рассчитайте, когда они на самом деле обработают устройство. (Это допустимо также для виртуальных устройств.), Но я не думаю, что можно рассчитывать на это.
например, Прямо сейчас я имею coretemp
и lm90
модули загружаются. Их Used by
количество является нулем, но они используются (временный файл. контроль).
Под чем Вы подразумеваете неиспользованный? То, что модулем показывают lsmod
средства, что, вероятно, было серьезное основание загрузить его. Для нахождения модулей, которые компилируются, но не используются, Вы могли сравнить вывод lsmod
с /lib/modules
для Вашей версии ядра.