Команда lsof выводит список открытых файлов и сетевых соединений в Linux. Вот как вы можете использовать ее в своих интересах.
Пытались ли вы когда-нибудь закрыть оболочку или размонтировать диск только для того, чтобы получить ошибку о том, что один или несколько файлов используются? Или, возможно, вы пытались отредактировать файл, но обнаружили, что он заблокирован другой программой?
Возможно, вы беспокоитесь, что кто-то получил несанкционированный доступ к вашей системе Linux. С помощью инструмента под названием lsof можно посмотреть, какие файлы открыты, даже через сетевые соединения.
Что такое lsof?
lsof - это утилита, которая выводит список открытых файлов. Виктор Абелл первоначально разработал ее в Университете Пердью. Она доступна для нескольких реализаций Unix, включая Linux. В настоящее время она поддерживается командой lsof-org на GitHub.
Установка lsof в Linux
Велика вероятность, что в вашей системе уже установлен lsof. Попробуйте набрать lsof в командной строке. Если это не так, вы можете установить его через менеджер пакетов вашего дистрибутива.
В системе Ubuntu или Debian введите:
1 | sudo apt install lsof |
В дистрибутивах Linux на базе Arch:
1 | sudo pacman -S lsof |
А в RHEL, CentOS, Rocky Linux и Oracle Linux:
1 | sudo dnf install lsof |
Просмотр открытых файлов в Linux с помощью lsof
Использование lsof очень простое. Вы можете просто вызвать его из командной строки, чтобы увидеть все открытые файлы, принадлежащие вам:
1 | lsof |
lsof может вывести список процессов, принадлежащих root, как "Permission denied". Чтобы увидеть все файлы, открытые всеми процессами в системе, запустите его от имени root:
1 | sudo lsof |
lsof покажет команду, PID, пользователя, который ее вызвал, дескриптор файла, тип, устройство, размер, узел и абсолютное имя открытого файла.
Если вы пытаетесь размонтировать диск, например, оптический привод, и получаете ошибку, что файлы используются, вы можете увидеть, какой процесс использует файл, а затем выйти или завершить его.
1 | lsof -i output |
Чтобы увидеть все интернет-сокеты, используемые в настоящее время в вашей системе, используйте опцию -i:
1 | sudo lsof -i |
Вы можете обнаружить возможное вторжение, если заметите что-то подозрительное в вашей системе, но более изощренные злоумышленники могут лучше заметать следы.
Опция -r переводит lsof в режим повтора, в котором он будет выводить результаты через определенный промежуток времени, пока вы не нажмете Ctrl + C. По умолчанию он запускается каждые 15 секунд, но вы можете изменить это значение. Например, вы можете запускать команду каждые 10 секунд, набрав:
1 | lsof -r 10 |
Как и в других утилитах Linux, вы можете комбинировать эти переключатели. Предположим, вы хотите следить за своим интернет-соединением каждые пять секунд. Вы можете сделать это с помощью lsof, набрав:
1 | lsof -i -r 5 |
Теперь вы можете отслеживать, какие процессы Linux имеют открытые файлы
С помощью lsof вы можете отследить, какие процессы имеют открытые файлы, и устранить все проблемы, которые они могут вызвать.
Открытые файлы - это только одна сторона процессов Linux. В Linux существует множество способов управления процессами. Легко запускать, останавливать и исследовать процессы в Linux, чтобы Вы могли получить максимальную отдачу от своей системы.