Команда lsof
— это утилита командной строки, которая выводит список всех открытых файлов. Если в одной системе работают сразу несколько пользователей, иногда трудно определить кто использует тот или иной открытый файл. Одна из причин использования команды lsof
— это ситуация, при которой диск не может быть размонтирован, так как возникает ошибка «Файлы используются».
Поэтому сегодня мы расскажем Вам о команде, позволяющей узнать, использует ли кто-то файл, и если да — то кто конкретно.
Содержание:
Как работает команда lsof
Команда lsof
просматривает память ядра и помогает вывести в командную строку список всех открытых файлов. В этом случае открытый файл может быть:
- обычным файлом;
- каталогом;
- специальным файлом;
- потоком;
- сетевым файлом и т. д.
Стоит отметить, что в Linux всё перечисленное является файлами. При этом данная команда может применяться с огромным количеством различных полезных опций. Для получения дополнительной информации по ним — посмотрите man
страницу lsof
:
Использование lsof
Вы можете использовать данный инструмент в файловой системе Linux. Это поможет Вам получить следующие данные:
- имя владельца файла;
- информацию о процессах, использующих файл;
- размер файла и много другое.
В этом случае предлагаем использовать команду, как показано ниже:
Важно: после выполнения команды ее вывод будет очень большим.
Какой процесс держит USB-флешку
Давайте рассмотрим такой пример. У нас есть флешка, подключенная к ПК. При попытке ее извлечь, мы получаем ошибку Error unmounting /dev/sdb1: target is busy:
Эта ошибка означает, что файл, который хранится на флешке, все еще используется.
Чтобы узнать, какой процесс держит флешку, укажем абсолютный путь к ней в качестве аргумента команды lsof
:
На скриншоте выше видно, что файл 123.sh
, который хранится на флешке, открыт в текстовом редакторе vi.
Для получения того же результата можно использовать команду grep
для сортировки вывода lsof
. Например:
Процессы какого пользователя используют файлы
Команда lsof
может вывести список файлов, открытых конкретным пользователем. Для этого достаточно использовать опцию -u
и указать соответствующее имя пользователя:
Читайте также: 10 примеров команд lsof в Linux
Можно исключить процессы определенного пользователя из вывода lsof
. Для этого напишите перед именем пользователя специальный символ ^
:
Какие файлы использует определенная команда
Также утилита lsof
позволяет посмотреть, какие файлы использует та или иная команда. Для этого применяется параметр -c
. Например, давайте узнаем, какие файлы использует редактор vi:
Какие процессы прослушивают порты
Также одной из важных особенностей lsof
является возможность определения процесса, прослушивающего какой-либо порт. Для этой задачи Вам нужно использовать команду вместе с опцией -i
.
Чтобы просмотреть все сокеты IPv4 или IPv6, передайте в качестве аргумента цифру 4
или 6
, соответственно:
Также можно определить процесс, который прослушивает / использует порт 80
. Для этого воспользуемся одной из следующих команд:
Выводы
Благодаря этой статье Вы изучили несколько способов, позволяющих узнать, кто использует тот или иной открытый файл в Linux. Эти навыки пригодятся любому начинающему системному администратору, а также будут полезны и представителям других ИТ-профессий.
Спасибо за время, уделенное прочтению статьи!
Если возникли вопросы — задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet / DevOps (программируемые системы) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.