Назад к вопросам
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 покажет номер дескриптора и файл, на который он ссылается.