Обложка канала

ServerAdmin.ru

12437 @srv_admin

Авторская информация о системном администрировании.

ServerAdmin.ru

3 года назад
Открыть в
Утилиту 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 [email protected] ▪ Список TCP соединений конкретного пользователя: # lsof -ai -u nginx ▪ Помимо TCP, можно и UDP соединения смотреть: # lsof -iUDP Публикацию имеет смысл сохранить в закладки. #linux #terminal