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

How Check Open Files Linux



Возможно, вы встречали поговорку: «В Linux все является файлом». Хотя это не совсем так, но в этом есть ряд истин.

В Linux и Unix-подобных системах все похоже на файл. Это означает, что ресурсам в системе Unix назначается файловый дескриптор, включая устройства хранения, сетевые сокеты, процессы и т. Д.







Дескриптор файла - это уникальный номер, который идентифицирует файл и другие устройства ввода / вывода. Он описывает ресурсы и то, как ядро ​​получает к ним доступ. Думайте об этом как о шлюзе к аппаратным ресурсам абстракции ядра.



К сожалению, концепция файловых дескрипторов выходит за рамки этого руководства; рассмотрите приведенную ниже ссылку, чтобы начать изучение вопроса:



https://en.wikipedia.org/wiki/File_descriptor





Это означает, что Unix и Unix-подобные системы, такие как Linux, интенсивно используют такие файлы. Для опытного пользователя Linux невероятно полезно видеть открытые файлы, процесс и пользователей.

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



Предварительные требования

Прежде чем мы начнем, убедитесь, что у вас есть:

  • Система Linux
  • Пользователь с привилегиями root или sudo

Если они у вас есть, приступим:

Утилита LSOF

Программа «Список открытых файлов», или для краткости lsof, созданная Виктором Абеллом, представляет собой служебную программу командной строки, которая позволяет нам просматривать открытые файлы и процессы или пользователей, которые их открывали.

Утилита lsof доступна в основных дистрибутивах Linux; однако вы можете обнаружить, что он не установлен, и поэтому вам может потребоваться установить его вручную.

Как установить lsof в Debian / Ubuntu

Чтобы установить его в Debian, используйте команду:

судо apt-get update

судо apt-get installlsof-а также

Как установить на REHL / CentOS

Для установки на REHL и CentOS используйте команду:

судообновление dnf

судоdnfустановитьlsof

Как установить на Arch

В Arch вызовите диспетчер пакетов с помощью команды:

судоПакман-Его

судоПакман-Slsof

Как установить на Fedora

В Fedora используйте команду:

судо ням установитьlsof

После того, как вы установили и обновили утилиту lsof, мы можем начать ее использовать.

Базовое использование

Чтобы использовать инструмент lsof, введите команду:

судоlsof

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

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

  • Столбец КОМАНДА - показывает имя процесса, использующего файл.
  • PID - показывает идентификатор процесса, использующего файл.
  • TID - Показывает идентификатор задачи (потоков) процесса.
  • TASKCMD - Представьте имя команды задачи.
  • ПОЛЬЗОВАТЕЛЬ - Владелец процесса.
  • FD - Показывает номер дескриптора файла. Вот как процессы используют файл; параметры, доступные в выходных данных этого столбца, включают:
  • cwd - текущий рабочий каталог.
  • мем - файл с отображением в память
  • pd - родительский каталог
  • jld - каталог тюрьмы
  • ltx - текст общей библиотеки
  • rtd - корневая директория.
  • текст - программный код и данные
  • NS - файл трассировки ядра.
  • ошибаться - Ошибка информации дескриптора файла
  • mmp - Устройство с отображением памяти.
  • ТИП - Показывает тип узла, связанного с файлом, например:
  • Unix - для сокета домена Unix.
  • ТЕБЕ - представляет каталог
  • REG - представляющий обычный файл
  • CHR - представляет файл специальных символов.
  • ССЫЛКА - файл символьной ссылки
  • BLK - Блокировать специальный файл
  • Интернет - Интернет-доменная розетка
  • ФИФО - именованный канал (файл в порядке очереди)
  • ТРУБКА - для труб

И многое другое.

  • УСТРОЙСТВА - Показывает номера устройств через запятую в следующем порядке: файл специальных символов, специальный блок, обычный, каталог и файл NFS.
  • РАЗМЕР / ВЫКЛ. - показывает размер файла смещения файла в байтах.
  • УЗЕЛ - показывает номер узла локального файла, тип для типа интернет-протокола и т. Д.
  • ИМЯ - показывает имя точки монтирования и файловую систему, на которой расположен файл.

Примечание: Пожалуйста, обратитесь к руководству lsof для получения подробной информации о столбцах.

Как показать процессы, открывшие файл

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

Например, чтобы увидеть файл, открывший файл / bin / bash, используйте следующую команду:

судоlsof/являюсь/трепать

Это даст вам результат, как показано ниже:

КОМАНДНЫЙ ПИД ПОЛЬЗОВАТЕЛЬ ТИП FD РАЗМЕР УСТРОЙСТВА/ВЫКЛЮЧЕНО НАЗВАНИЕ УЗЛА

ksmtuned1025root txt REG253,0 1150704 428303 /usr/являюсь/трепать

трепать 2968centos txt REG253,0 1150704 428303 /usr/являюсь/трепать

трепать 3075centos txt REG253,0 1150704 428303 /usr/являюсь/трепать

Как показать файлы, открытые конкретным пользователем

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

судоlsof-uсотни

Это даст вам результат, как показано ниже:

Как показать файлы, открытые определенным процессом

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

Например, приведенная ниже команда показывает файлы, открытые с помощью bash.

судоlsof-п 3075

Это даст вам только файлы, открытые systemd, как показано:

Как показать файлы, открытые в каталоге

Чтобы файлы открывались в определенном каталоге, мы можем передать параметр + D, за которым следует путь к каталогу.

Например, перечислите открытые файлы в каталоге / etc.

судоlsof + D/так далее

Ниже приведен вывод для этого:

Как показать сетевое соединение

Поскольку все в Linux - это файлы, мы можем получить сетевые файлы, такие как файлы TCP или соединения.

Мы можем использовать команду:

судоlsofTCP

Это даст вам TCP-соединения в системе.

Вы также можете фильтровать по конкретному порту, используя команду, показанную ниже:

судоlsof:22

Это даст вам результат, как показано ниже:

Как постоянно показывать файлы

Lsof предоставляет нам режим для зацикливания вывода каждые несколько секунд. Это позволяет вам постоянно отслеживать файлы, открытые процессом или пользователем.

Однако этот вариант требует, чтобы вы завершили процесс вручную.

Например, приведенная ниже команда постоянно отслеживает файлы, открытые на порту 22:

судоlsof -r:22

Как видите, в третьем цикле lsof перехватывает установленное соединение с сервером по SSH.

Заключение

Lsof - невероятно полезная утилита. Он позволяет отслеживать важные файлы, а также отслеживать пользователей и процессы, открывающие файлы. Это может быть невероятно полезно при устранении неполадок или поиске злонамеренных попыток проникновения в систему.

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

Спасибо, что прочитали и поделились! Надеюсь, вы узнали что-то новое!