Назад к вопросам
Junior
139
questionbank
Как в Linux посмотреть список дескрипторов файлов?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Список дескрипторов файлов можно посмотреть с помощью команды lsof.
# Вывести все открытые файлы и дескрипторы для всех процессов
lsof
# Вывести открытые файлы и дескрипторы для конкретного процесса по PID
# Замените <PID> на идентификатор интересующего процесса
lsof -p <PID>
# Вывести открытые файлы и дескрипторы для всех процессов пользователя
# Замените <username> на имя пользователя
lsof -u <username>
# Вывести открытые файлы и дескрипторы для конкретной команды
# Замените <command> на имя команды
lsof -c <command>
# Вывести открытые файлы и дескрипторы, связанные с сетевыми соединениями
lsof -i
# Вывести открытые файлы и дескрипторы, связанные с конкретным портом
# Замените <port_number> на номер порта
lsof -i :<port_number>
# Вывести открытые файлы и дескрипторы, связанные с конкретным файлом или директорией
# Замените <file_or_directory> на путь к файлу или директории
lsof <file_or_directory>
lsof выводит информацию в формате с колонками:
- COMMAND: Имя команды, связанной с процессом.
- PID: ID процесса.
- USER: Пользователь, владеющий процессом.
- FD: Дескриптор файла. Могут быть:
- cwd: Текущая рабочая директория.
- rtd: Корневая директория.
- txt: Текстовый файл (исполняемый код).
- mem: Файл карты памяти.
- mmap: Файл, отображенный в память.
- <N>u: Дескриптор файла <N> открыт в режиме "read/write".
- <N>r: Дескриптор файла <N> открыт в режиме "read only".
- <N>w: Дескриптор файла <N> открыт в режиме "write only".
- <N>l: Дескриптор файла <N> заблокирован.
- TYPE: Тип узла:
- REG: Обычный файл.
- DIR: Директория.
- CHR: Символьное устройство.
- BLK: Блочное устройство.
- FIFO: Именованный канал (pipe).
- SOCK: Сокет.
- DEVICE: Номер устройства.
- SIZE/OFF: Размер файла или смещение (offset).
- NODE: Номер inode.
- NAME: Имя файла.
Также можно использовать /proc файловую систему. Для каждого процесса (PID), /proc/<PID>/fd/ является директорией, содержащей символические ссылки на файлы, которые открыл этот процесс. Каждая ссылка названа по номеру дескриптора файла.
# Посмотреть дескрипторы файлов для процесса с PID <PID>
# Замените <PID> на идентификатор интересующего процесса
ls -l /proc/<PID>/fd/
Вывод ls -l покажет номер дескриптора и файл, на который он ссылается.