Руководство по выживанию lsof [закрыто]

104

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

Какие из наиболее распространенных и полезных способов использования lsof и какие параметры командной строки используются для этого?

Ханс Сюннессон
источник

Ответы:

119

Чтобы показать все сети, связанные с данным port:

lsof -iTCP -i :port
lsof -i :22

Чтобы показать подключения к определенному хосту, используйте @host

lsof -i@192.168.1.5

Показать соединения на основе хоста и порта с помощью @host:port lsof -i@192.168.1.5: 22

grepping for LISTENпоказывает, на каких портах ваша система ожидает подключения:

lsof -i| grep LISTEN

Показать, что открыл данный пользователь, используя -u:

lsof -u daniel

Посмотрите, с какими файлами и сетевыми подключениями команда использует -c

lsof -c syslog-ng

-pПереключатель позволяет увидеть , что данный процесс ID имеет открытым, который хорош для получения дополнительной информации о неизвестных процессах:

lsof -p 10075

В -tопции возвращает толькоPID

lsof -t -c Mail

Используя параметры -tи -cвместе, вы можете HUPобрабатывать

kill -HUP $(lsof -t -c sshd)

Вы также можете использовать -twith, -uчтобы убить все, что открыл пользователь.

kill -9 $(lsof -t -u daniel)
Кевин
источник
Источник: danielmiessler.com/study/lsof
Uphill_ What '1
Один хороший способ - использовать чит-гем, если вы используете Ruby. Это просто удобный, управляемый сообществом интерфейс командной строки для шпаргалок по многим утилитам (не зависящим от языка). Дайте ему попробовать .
Кедар Мхасваде
25
lsof -i :port 

расскажет, какие программы прослушивают конкретный порт.

Дворак
источник
1
Это не ограничивается «прослушиванием», поэтому, если вы укажете lsof -i :8080и у вас есть несколько процессов, подключающихся к прокси на порту 8080, вы тоже получите их.
Мэтт Бирн
14
lsof +D /some/directory

Рекурсивно отобразит все файлы, открытые в каталоге. + d только для верхнего уровня.

Это полезно, когда у вас высокий% ожидания ввода-вывода, связанный с использованием на конкретной FS, и вы хотите увидеть, какие процессы поглощают ваш io.

сиеста
источник
13

lsof -iпредоставит список открытых сетевых сокетов. Эта -nопция предотвратит поиск DNS, что полезно, когда ваше сетевое соединение медленное или ненадежное.

Джон Милликин
источник
5
lsof -iбудет только показать вам , что розетки у вас есть доступ к в пространстве имен (и которые рассматриваются как «интернет» розетки через самоанализ, а не только какой - либо вид сетевую розетки). В противном случае дескрипторы типа sock не будут отображаться в списке.
Ник Бастин,
13

Посмотрите, какие файлы открыты запущенным приложением или демоном:

lsof -p pid

Где pid - это идентификатор процесса приложения или демона.

Крис
источник
10
lsof +f -- /mountpoint

перечисляет процессы, использующие файлы на монтировании, смонтированном в / mountpoint. Особенно полезно для определения того, какие процессы используют подключенный USB-накопитель или CD / DVD.

мас
источник