Полезные утилиты – lsof.
Список всех открытых файлов.
Запустив lsof без каких-либо аргументов мы получим список всех открытых файлов всеми возможными процессами.
Посмотрим, кто использует файл.
С файлом в качестве аргумента, lsof показывает все процессы, которые используют данный файл каким-либо образом.
Вы можете указать несколько файлов, и получите все процессы, которые используют данные файлы:
Рекурсивный поиск всех открытых файлов, начиная с указанной директории, выглядит вот так.
С аргументом +D lsof ищет все файлы в указанной директории и всех поддиректориях.
Заметьте, что это будет работать медленнее чем с обычным grep:
Это медленнее потому что +D сперва ищет все файлы и только затем делает вывод.
Список всех файлов открытых пользователем.
Опция -u (думаю это user) ограничивает вывод файлов открытых пользователем pkrumins.
Вы можете использовать список разделенный запятой, если хотите узнать информацию сразу по нескольким пользователям:
Этот пример покажет список файлов открытых пользователями rms и root.
По другому это можно сделать указав параметр -u дважды:
Найти все файлы открытые программой.
Параметр -c выбирает список файлов принадлежащих процессу, чье имя начинается с apache.
Итак, вместо запуска:
Вы можете использовать более короткую версию:
Как правило, Вы можете определить только начальные буквы имени процесса, который вы хотите обследовать:
Эта команда выведет список всех файлов, открытых процессом начинающимся на apa.
Вы также можете указать несколько параметров -c для вывода файлов, открытых различными процессами:
Эта команда выведет список всех файлов, открытых процессами apache и python.
Список файлов открытых пользователем или процессом.
Опции Lsof могут комбинироваться. Действие по умолчанию между опциями определяется как ИЛИ. Это означает, что комбинация параметров -u pkrumins и -c apache выводит список файлов открытых пользователем pkrumins или процессом apache.
Список всех файлов открытых пользователем И процессом.
Параметр -a. Комбинирует опции с условием И. Выводится список файлов открытых bash, который запущен пользователем pkrumins.
Список всех файлов открытых всеми пользователями КРОМЕ root.
Заметьте, что символ ^ ставится до имени пользователя root. Этот трюк инвертирует совпадение для lsof на обратное, распечатывая все файлы пользователей отличных от root.
Список всех файлов открытых процессом с определенным PID.
Параметр -p (думаю это PID) фильтрует вывод отображая список файлов открытых программой с указанным id.
Помните, что Вы можете выбрать разичные PID’ы используя либо список разделяемый запятой, либо используя несколько аргументов -p:
Выбирает процессы с PID 450, 980 и 333.
Список всех открытых фалов за ИСКЛЮЧЕНИЕМ процесса с указанным PID.
Здесь снова используется инвертный оператор ^. Он инвертирует список и не включает в него процессы с PID 1.
Список всех сетевых соединений.
Lsof с опцией -i выводит список всех Интернет сокетов (TCP и UDP).
Список всех TCP соединений.
Опция -i может иметь несколько различных параметров, один из них tcp. Опция tcp заставляет lsof выдавать список связанный только с TCP сокетами.
Список всех UDP соединений.
Опция udp говорит lsof выводить список связанный только с UDP сокетами.
Кто использует этот порт.
Опция :25 с -i заставляет lsof искать процессы использующие TCP или UDP с портом 25.
Вы также можете указать именованное название порта (смотрите /etc/services) вместо его номера:
Найти, кто исопльзует данный UDP порт.
Аналогично, найти, кто использует данный TCP порт:
Найти все сетевые действия пользователя.
Здесь опция -a комбинируется с -u и -i формируя список сетевых файлов используемых пользователем hacker.
Список всех файлов NFS (Network File System).
Эту опцию легко запомнить, потому что -N это NFS.
Список всех файловых сокетов домена Unix.
Эту опцию также легко запомнить, потому что -U это Unix.
Список всех файлов для процессов принадлежащих определенной группе id.
Групповые процессы используются для логической группировки процессов. Этот пример покажет список всех файлов открытых процессами принадлежащими к группе с PGID 1234.
Список всех файлов ассоциированных с указанным файловым дескриптором.
Список всех файлов открытых файловым дескриптором с номером 2.
Вы можете задать интервал файловых дескрипторов:
Список всех файлов с файловыми дескрипторами 0, 1 и 2.
Несколько специальных значений, таких как mem, которые работают с файлами отображаемыми в память:
Или txt программ загруженных и выполняемых в памяти:
Выводит PID’ы процессов использующих какие-то ресурсы.
Опция -t выводит только PID’ы процессов. Используя совместно с -i это позволяет выводить PID’ы всех процессов с сетевыми соединениями. Так можно легко убить все процессы использующие сеть:
Повторяющийся листинг файлов.
Аргумент -r заставляет lsof повторять список файлов, до тех пор пока он не будет остановлен. Аргумент 1 говорит, что необходимо повторять листинг через каждую секунду. Эту опцию лучше всего комбинировать с поисковым запросом, производящим мониторинг сетевой пользовательской активности: