зеркало из
https://github.com/iharh/notes.git
synced 2025-10-30 13:16:07 +02:00
45 строки
3.3 KiB
Plaintext
45 строки
3.3 KiB
Plaintext
2021
|
|
https://www.tecmint.com/10-lsof-command-examples-in-linux/
|
|
https://bookflow.ru/10-primerov-komand-lsof-v-linux/
|
|
|
|
*************************************************************************************************
|
|
Утилиту lsof в дистрибутивах Linux чаще всего используют для просмотра открытых файлов. Я и сам так делаю, и много материалов на эту тему видел. Да и название у неё говорящее. Оно как раз образовано от фразы list open files.
|
|
Тем не менее, её можно использовать не только для этого.
|
|
|
|
▪️ Но сначала про основную функциональность. Лично я чаще всего запускаю lsof для просмотра открытых файлов, которые удалили, но забыли закрыть файловый дескриптор. Например, наживую удалили лог nginx или docker и не перезапустили сервис. В итоге файла нет, а место он занимает. Такие файлы будет видно вот так:
|
|
# lsof | grep '(deleted)'
|
|
или так:
|
|
# lsof +L1
|
|
|
|
▪️ Смотрим кем и что конкретно открыто из файлов в указанной директории:
|
|
# lsof +D /var/log
|
|
|
|
▪️ Смотрим открытые файлы конкретного пользователя:
|
|
# lsof -u user
|
|
Часто бывает нужно быстро узнать, сколько файлов у него открыто, чтобы понять, если с ним проблема или нет:
|
|
# lsof -u user | wc -l
|
|
А теперь то же самое, только наоборот исключим открытые файлы пользователя:
|
|
# lsof -u^user | wc -l
|
|
Рассмотрим ситуацию, когда под пользователем плодятся процессы, которые открывают кучу файлов и нам всё это надо быстро прибить. Добавляем ключ -t к lsof, который позволяет выводить только PID процессов. И отправляем вывод в kill:
|
|
# kill -9 `lsof -t -u user`
|
|
|
|
▪️ Файлы, открытые конкретным процессом, для которого указан его PID. Очень востребованная функциональность.
|
|
# lsof -p 94169
|
|
|
|
▪️ А теперь немного того, что от lsof не ожидаешь. Список TCP соединений, причём очень наглядный и удобный для восприятия.
|
|
# lsof -ni
|
|
|
|
▪️ Смотрим подробную информацию о том, кто открыл 80-й порт:
|
|
# lsof -ni TCP:80
|
|
|
|
▪️ Список TCP соединений к конкретному IP адресу:
|
|
# lsof -ni TCP@172.29.139.228
|
|
|
|
▪️ Список TCP соединений конкретного пользователя:
|
|
# lsof -ai -u nginx
|
|
|
|
▪️ Помимо TCP, можно и UDP соединения смотреть:
|
|
# lsof -iUDP
|
|
|
|
Публикацию имеет смысл сохранить в закладки.
|