ГлавнаяОперационные системыLinuxКак использовать команду lsof в Linux для вывода списка открытых файлов

Как использовать команду lsof в Linux для вывода списка открытых файлов

Преимущество Linux в том, что вы можете легко просматривать и управлять всем: от процесса загрузки до установки пакетов программного обеспечения. Здесь мы обсудим, как использовать команду lsof в Linux для просмотра открытых файлов и процессов, использующих их. Знание того, как это просмотреть, поможет вам понять, как работает система, и даже предпринять необходимые действия для конкретных процессов.

Команда Lsof

Для просмотра открытых файлов и ответственных за них пользователей или процессов мы используем утилиту lsof. По умолчанию в большинстве дистрибутивов предустановлен lsof.

Однако, если он у вас не установлен, вы можете использовать менеджер пакетов, чтобы установить

Команда Lsof

Debian/Ubuntu

В Debian выполните команду:

sudo apt-get install lsof

Арка/Манджаро

В Manjaro и других дистрибутивах на основе Arch используйте pacman, выполнив команду:

sudo pacman -S lsof

CentOS/REHL/Fedora

Для CentOS и семейства REHL вы можете использовать dnf:

sudo dnf install lsof

Используйте команду lsof для получения списка открытых файлов процесса Linux

Как и большинство команд Linux, утилита lsof невероятно проста в использовании. Начните с ввода команды lsof:

sudo lsofDebian/Ubuntuолнения приведенной выше команды lsof должен вернуть информацию об открытых файлах в системе.

Арка/Манджаро

TID TASKCMD USER FD TYPE DEVICE SIZE/OFF NODE NAME init 1 root cwd DIR 8,48 4096

CentOS/REHL/Fedora

>2
/ init 1 root rtd DIR 8,48 4096Используйте команду lsof для получения списка открытых файлов процесса Linuxot txt REG 0,19 632048 281474976743906 /init init 1 root 0u CHR 1,3 0t0 15362 /dev/null init 1 root 1u CHR 1,3 0t0 15362 /dev/null init 1 root 2u CHR 1,3 0t0 15362 /dev/null init 1 root 3w CHR 1,11 0t0 15367 /dev/kmsg init 1 root 4u sock 0,8 0t0 22689 protocol: AF_VSOCK init 1 root 5r REG 0,4 0 4026532185 mnt init 1 root 6r REG 0,4 0 4026532201 mnt init 1 root 7r DIR 8,48 4096 240 /home/cap init 1 root 8u DIR 8,48 4096 2 / init 1 root 9u sock 0,8 0t0 21853 protocol: AF_VSOCK

Примечание. если у вас есть привилегии sudo, запустите команду с помощью sudo, чтобы избежать ошибок «отказано в разрешении» для определенных файлов.

Как показано в приведенном выше выводе, вывод lsof имеет следующие столбцы:

<тр>

Столбец Представление
Команда Показывает имя процесса, использующего целевой файл.
PID Уникальный идентификатор процесса, использующего файл.
TID В столбце отображается идентификатор потока.
TASKCMD Имя команды задачи.
USER Имя пользователя или UID пользователь, запускающий процесс.
FD Файловый дескриптор файла и режимов.
TYPE Узел, связанный с целевым файлом.
УСТРОЙСТВО Номер устройства, разделенный запятыми.
SIZE/OFF Размер файла в байтах по размеру смещения файла
NODE Значение индексного дескриптора локального файла. Вы можете использовать команду stat, чтобы показать inodeинформацию о файле.
NAME Точка монтирования файла.

Теперь, когда вы понимаете, что представляет собой содержимое распечатки команды lsof, давайте воспользуемся этой командой для фильтрации конкретной информации.

Как фильтровать определенный процесс

Чтобы фильтровать только определенные файлы, открытые определенным процессом, мы можем использовать либо имя процесса, либо значение PID.

Например, чтобы показать файлы, используемые процессом Firefox, мы можем использовать команду:

sudo lsof -c firefox
Lsof C Firefox

Команда покажет все файлы, открытые процессом Firefox.

Чтобы фильтровать по идентификатору процесса, мы можем использовать параметр -pи передать идентификатор процесса. Вы можете использовать команду top, чтобы получить идентификатор целевого процесса.

Например, чтобы получить PID процесса Firefox, мы можем использовать команду:

sudo ps aux | grep firefox

После получения PID целевого процесса используйте lsof, чтобы отобразить открытые файлы:

sudo lsof -p 2121
Лсоф Пид

Приведенная выше команда распечатает файлы, открытые процессом с указанным PID.

Как фильтровать по конкретному пользователю

Чтобы просмотреть только файлы, открытые конкретным пользователем, мы можем использовать флаг -u. Например, чтобы отфильтровать пользователя Debian, используйте команду:

sudo lsof -u debian
ЛСоф и Debian

Как фильтровать определенный файл

Предположим, вы хотите знать только процесс и пользователя, открывшего определенный файл. Для этого передайте им

Как фильтровать определенный процесс

an> lsof /bin/sleep
Лсоф сна

Приведенный выше пример будет фильтровать только конкретный файл и возвращать соответствующую информацию, включая пользователя, идентификатор процесса и т. д.

Подведение итогов

В этом простом руководстве мы обсудили, как запросить в системе информацию об открытых файлах с помощью команды lsof в Linux. Вот еще несколько команды для вывода списка содержимого каталогов в терминале.

Как фильтровать по конкретному пользователю

Как фильтровать определенный файл

Подведение итогов

ПОХОЖИЕ СТАТЬИ

Популярные записи