- Как в Linux найти, кто использует файл
- Идентификация открытых файлов и сетевых подключений в Linux — lsof (примеры)
- 😡 Как узнать, кто использует файл в Linux
- linux-notes.org
- Примеры использования команды Lsof
- Установка Lsof в RHEL, CentOS и Fedora Linux:
- Установка Lsof в Debian, Ubuntu и Mint Linux:
- Установка Lsof в freeBSD:
- Опции.
- Базовые примеры lsof команды
- Список процессов, которые открыли конкретный файл
- Показать Все процессы открытых файлов в каталоге
- Показать все файлы, открытые процессы, начинающиеся с буквы
- Дисплей, который обращается к устройству
- Список файлов, открытых определенным пользователем
- Убить все данный пользователя
- Перечислите все сетевые соединения
- Перечислите все открытые файлы по конкретному процессу
- Показать PID с опцией -t.
- One thought on “ Примеры использования команды Lsof ”
- Добавить комментарий Отменить ответ
Как в Linux найти, кто использует файл
Оригинал: How to Find Out Who is Using a File in Linux
Автор: Aaron Kili
Дата публикации: 29 марта 2019 г.
Перевод: В.Костромин
Дата перевода: 13 мая 2020 г.
В этой статье мы расскажем, как узнать, кто использует тот или иной файл в Linux. Это позволит вам найти системного пользователя или процесс, который использует открытый файл.
Мы можем использовать команду lsof, чтобы узнать, использует ли кто-то файл, и если да, то кто именно. Эта команда обращается к памяти ядра в поиске открытых файлов и выводит список всех открытых файлов. Открытый файл может быть обычным файлом данных, каталогом, специальным файлом устройства, символьным файлом устройства, потоком, сетевым файлом или относиться к какому-то еще типу файлов — потому что в Linux все является файлом.
Lsof используется файловой системой, чтобы определить, кто использует какие-либо файлы в этой файловой системе. Вы можете запустить команду lsof в файловой системе Linux, и выходные данные идентифицируют владельца и информацию о процессах, использующих файл, как показано в следующем листинге выходных данных.
Список всех открытых в Linux файлов
Чтобы вывести список файлов, открытых для конкретного пользователя, выполните следующую команду:
Список файлов, открытых конкретным пользователем (при использовании в вашей системе замените tecmint действительным именем пользователя)
Еще одно важный случай применения команды lsof — определение процесса, использующего определенный порт. Например, чтобы определить, какой процесс использует порт 80, можно воспользоваться следующим вариантом запуска команды lsof.
Определение процесса, прослушивающего порт
Важное замечание: Поскольку lsof в поисках открытых файлов обращается к памяти ядра, быстрые изменения в памяти ядра могут привести к непредсказуемому результату. Это один из главных недостатков использования команды lsof.
За дополнительной информацией обращайтесь к странице руководства lsof man:
На этом все! В этой статье мы объяснили, как узнать, кто использует тот или иной файл в Linux. Мы показали, как определить владельца и информацию о процессах, использующих открытый файл.
Об авторе
Aaron Kili — энтузиаст Linux и свободного ПО, системный администратор, веб-разработчик и в настоящее время создатель контента для TecMint, который любит работать с компьютерами и твердо верит в обмен знаниями.
Вы можете найти на нашем сайте более подробные статьи о команде lsof:
Источник
Идентификация открытых файлов и сетевых подключений в Linux — lsof (примеры)
Lsof расшифровывает как List Open Files (список открытых файлов). Команда формирует список дескрипторов открытых файлов по процессам и именам файлов. В Линукс все является файлами (очереди, сокеты, директории, устройства и т.д. ). Таким образом, с помощью Lsof, вы можете получить информацию о любых открытых файлов.
1. Введение в lsof
Также работает рекурсивный просмотр:
6. Просмотр файлов открытых конкретным пользователем
Для поиска файлов открытых определенным пользователем, используем ключ -u
Иногда необходимо вывести файлы открытые всеми пользователями, за исключением конкретного. Для этого используется -‘^’
Данная команда выводит список файлов открытых всеми пользователями, за исключением пользователя alex1812
7. Список всех файлов открытых конкретным процессом
Для вывода списка всех файлов открытых конкретным процессов используется ключ -p. Это может быть полезно для получения большей информации о самом процессе.
8. Уничтожить все процессы используемые конкретным пользователем
Если необходимо уничтожить все процессы, имеющие открытые файлы, конкретного пользователя, мы можем использовать ключ -t для просмотра id процессов и уничтожить их с помощью kill —
Данная команда уничтожит все процессы пользователя alex1812, которые имели открытые файлы.
Аналогичным образом, вы можете использовать ключ -t для других целей, например, чтобы получить список id процессов, которые открыли /var/log/syslog
9. Комбинирование ключей
По умолчанию, если вы используете более одного ключа в Lsof, то вывод команды будет объеденен по этим ключам. Например,
В этой команде мы используем два ключа -u и -c, таким образом команда одновременно выводит и список процессов принадлежащих пользователю alex1812, и процессы начинающиеся со слова init (принадлежащих любым пользователям).
Вы можете использовать ключ -a, чтобы совместить вывод по нескольким параметрам, например процессы принадлежащие пользователю alex1812 и начинающиеся с init:
10. Выполнение Lsof в режим повтора
Lsof поддерживает вывод в режиме повтора. То бишь сначала будет выведет список файлов с заданными параметрами, затем задержка на заданный интервал и опять вывод на основе этих же параметров.
Режим повтора может быть включен ключами +r и -r. Если используем +r, то режим повтора будет прерван в случае отсутствия открытых файлов. Ключ -r будет продолжать вывод с заданным интервалом вне зависимости от наличия открытых файлов.
Каждый цикл вывода будет разделен с помощью «=======». Мы также можем указать время задержки для обоих ключей.
В данном примере мы выводим список процессов принадлежащих alex1812 c именем x-session и задержкой повторного вывода в 5 секунд.
Поиск сетевых подключений
Сетевые соединения в Linux также являются файлами. Таким образом, мы можем найти информацию о них с помощью Lsof.
11. Просмотр всех сетевых подключений
Для просмотра всех сетевых подключений используем ключ -i
Вы также можете использовать -i4 и i6 для вывода только подключений по IPv4 или IPv6 соответственно.
12. Список всех сетевых файлов используемых конкретным процессом
В первом случае мы задаем процесс по его id, во втором по имени (по первым символам).
13. Список процессов прослушивающих определенный порт
Для этого используется ключ -i и номер порта через ‘:’
14. Список всех UDP и TCP соединений
Для вывода такого списка используем —
15. Просмотр всех NFS (Network File System) файлов
Для просмотра всех NFS файлов используем ключ -N, например просмотр всех NFS файлов открытых от пользователя alex1812 —
Надеюсь информация данной статьи будет кому-либо полезна, особенно тем, кто не любит читать man’ы =)
Источник
😡 Как узнать, кто использует файл в Linux
В этой статье мы объясним, как узнать, кто использует тот или иной файл в Linux.
Это поможет вам узнать системного пользователя или процесс, который использует открытый файл.
Мы можем использовать команду lsof, чтобы узнать, использует ли кто-то файл, и если да, то кто.
Команда читает память ядра в поиске открытых файлов и помогает вам перечислить все открытые файлы.
В этом случае открытым файлом может быть обычный файл, каталог, специальный файл блока, специальный символьный файл, поток, сетевой файл и многие другие – потому что в Linux все является файлом.
Lsof используется в файловой системе для определения того, кто использует какие-либо файлы в этой файловой системе.
Вы можете запустить команду lsof в файловой системе Linux, и выходные данные идентифицируют владельца и информацию о процессах для процессов, использующих файл, как показано в следующих выходных данных.
Еще одно важное использование lsof – выяснение процесса прослушивания определенного порта.
Например, определите процесс, прослушивающий порт 80, с помощью следующей команды.
Примечание. Поскольку lsof читает память ядра при поиске открытых файлов, быстрые изменения в памяти ядра могут привести к непредсказуемым результатам. Это один из основных недостатков использования команды lsof.
Для получения дополнительной информации, смотрите man-страницу lsof:
Это все! В этой статье мы объяснили, как узнать, кто использует тот или иной файл в Linux.
Мы показали, как идентифицировать владельца и обрабатывать информацию для процессов, используя открытый файл.
Используйте форму обратной связи ниже, чтобы связаться с нами по любым вопросам или комментариям.
Источник
linux-notes.org
Примеры использования команды Lsof
lsof (от англ. LiSt of Open Files) — утилита, которая предназначена для вывода информации о том, какие файлы используются теми или иными процессами. Эта программа имеется в очень многих UNIX ‐ подобных ОС включая GNU/Linux с ядром версии 2.1.72 и выше, а также в HP-UX, AIX, NextStep, Apple Darwin для Power Macintosh, SCO UnixWare, FreeBSD, NetBSD, OpenBSD и так далее.
В этом уроке показать практические примеры использования Lsof команды.
Установка Lsof в RHEL, CentOS и Fedora Linux:
Установка Lsof в Debian, Ubuntu и Mint Linux:
Установка Lsof в freeBSD:
Опции.
default : : без вариантов, Lsof выведет список всех открытых файлов для всех процессов.
grouping : это возможно группирования параметров, например -abC, но вы должны следить какие опции принимают параметры.
-a : «И» результаты (вместо «ИЛИ»).
—l : показать идентификатор пользователя (userID) вместо имени пользователя на выходе.
—h : Вывести помощь (help).
—t : Получить ID процесса (ов) только.
—U : Получить адрес сокета UNIX.
-F : вывод готов для другой команде, которую можно отформатировать различными способами, например,-F pcfn (идентификатор процесса, название команды, дескриптор файла, имя файла, с нулевого символа)
Базовые примеры lsof команды
Набрав команду Lsof он выведет список всех открытых файлов, принадлежащих всех активных процессах в системе:
По умолчанию отображается один файл в каждой строке. Большинство колонн говорят сами за себя. Мы объясним подробности о нескольких загадочных столбцов (FD и TYPE(тип)).
FD — Представляет дескриптор файла. Некоторые из значений FD являются.
cwd — текущий рабочий каталог.
TXT — текстовый файл.
mem — Память отображаемого файла.
mmap — Память отображаемого устройства.
NUMBER — представить фактический дескриптор файла. Символ после числа, представляет собой режим в котором открывается файл.
r- для чтения, w- для записи, u- для чтения и записи.
TYPE (ТИП) — Указывает тип файла. Некоторые из значений типов,
REG — обычный файл
DIR — Справочник
FIFO — First In First Out
CHR — Поведение специального файла
Или посмотрите полный список FD& TYPE в мануале Lsof.
Список процессов, которые открыли конкретный файл
Вы можете перечислить только процессы, которые открыли конкретный файл, предоставляя имя файла в качестве аргументов. (например введем в терминале команду: # lsof /var/log/apache2/ access.log ), получим в ответ:
lsof с параметром
Показать Все процессы открытых файлов в каталоге
флаги +D /var/log будет информировать Lsof найти все связанные процессы, работающие с файлами под /var/log:
Показать все файлы, открытые процессы, начинающиеся с буквы
Для отображения всех файлов, открытых процессов, начинающихся с буквы «C» выполнить Lsof -c b для процессов, начиная с «b».
Вывести все файлы, открытые с помощью конкретной команды:
Дисплей, который обращается к устройству
Для отображения кто получает доступ устройства, каталога или двоичный файлов. В данном случае я с изложением кто обращается к области памяти.
Список файлов, открытых определенным пользователем
Для того чтобы найти список файлов, открытых определенных пользователей, использовать опцию ‘-U’.
Show what all users are doing except a certain user using -u ^user
Убить все данный пользователя
Вы можете убить все процессы которые держат открытые файлы по конкретному пользователю:
Перечислите все сетевые соединения
Вы можете перечислить все сетевые подключения, открытые с помощью ‘-I’ вариант.
Получить только траффик сIPv6 с опцией -i 6
Показать только соединения TCP (работает то же самое и для UDP), вы можете также показать только TCP или UDP соединения, предоставляя протокол сразу после -i:
Показать сети, связанный с данным портом с помощью -i: порт:
Показать соединения к определенному хосту с помощью «host». Это очень полезно, когда вы ищете, есть ли у вас открытые соединения с данного хоста в сети или по интернету.
Показать соединения к определенному хосту с помощью @host:port. Вы также можете комбинировать отображение хост и порт:
Найти прослушивающие порты, которые ждут соединения:
Вы также можете отсеять не нужно и вывести например, только «LISTEN»:
Найти установленные соединения. Вы можете также показать любые соединения, которые уже установлены на сервере:
Вы можете отгрепать мусор и найти что-то для себя, например:
Перечислите все открытые файлы по конкретному процессу
Вы можете перечислить все файлы, открытые конкретного процесса с использованием опции ‘-P’. Это будет полезно иногда, чтобы получить больше информации о конкретном процессе.
Показать приложения, которые используют подключение к интернету в данный момент:
Показать PID с опцией -t.
Показать PIDможно с опцией -t:
Использование опций -t и -c вместе, чтобы выполнить HUP для процессов:
Lsof + L1 показывает все открытые файлы, имеющие ссылки ( менее чем 1):
Показать открытых соединений с диапазоном портов:
Для получения дополнительной использования выполните команду:
Показать приложения, которые используют подключение к интернету в данный момент.
На этом я завершу данную тему «Примеры использования команды Lsof «.
One thought on “ Примеры использования команды Lsof ”
Спасибо! Суперпримеры, то что надо.
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Источник