Последние новости:

Поиск по сайту:

И терпентин на что-нибудь полезен! (К. Прутков).

7 примеров команды lsof в Linux1 мин для чтения

29.01.2019
7 примеров команды lsof в Linux

В этой статье вы узнаете, как вывести список открытых файлов пользователем или процессом с помощью команды lsof в Linux.

Мы думаем, что в какой-то момент вы задавались вопросом, есть ли способ показать открытые файлы процесса или пользователя. Хорошо, что ответ на этот вопрос это команда lsof.

Вы, наверное, уже знаете, что команда ls — это сокращение от «list». lsof обозначает «Список открытых файлов». И это именно то, что он делает, перечисляет открытые файлы по процессам, пользователям и идентификаторам процессов.

Позвольте нам показать вам наиболее распространенное использование команды lsof.

 

Примеры команды lsof

Если вы используете команду lsof без каких-либо параметров и аргументов, она выведет список всех открытых файлов всеми процессами в системе.

Lsof

 

Вывод должен быть таким:

COMMAND     PID   TID             USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
systemd       1                   root  cwd       DIR              252,1      4096          2 /
systemd       1                   root  rtd       DIR              252,1      4096          2 /
systemd       1                   root  txt       REG              252,1   1595792      17384 /lib/systemd/systemd
systemd       1                   root  mem       REG              252,1   1700792       2077 /lib/x86_64-linux-gnu/libm-2.27.so

 

Выводы в основном говорят сами за себя, но вы все еще можете задаться вопросом о столбцах FD и TYPE.

FD означает файловый дескриптор. Некоторые из общих значений для FD:

  • cwd — Текущий рабочий каталог
  • txt — текстовые файлы
  • mem — файл с отображенной памятью
  • mmap — Устройство с отображенной памятью
  • NUMBER — фактический дескриптор файла. У этого также есть информация о том, в каком разрешении файла это открыто.

TYPE это не просто. Он определяет тип файла. Вот некоторые примеры:

  • REG — обычный файл
  • DIR — Справочник
  • CHR — специальный файл символов
  • FIFO — первый на первом

Доверьтесь нам. Вы не захотите запускать команду lsof без аргументов.

Почему мы это говорим? Потому что он начнет заполнять ваш экран тысячами результатов.

Читать  5 практических примеров команды Tail в Linux

Если мы запускаем команду lsof на сервере Ubuntu и подсчитываем количество строк с помощью команды wc, вот результат.

lsof | wc -l
11432

 

Да! Вот так. В системе открыто более одиннадцати тысяч файлов, открытых различными процессами.

Не беспокойтесь, команда lsof очень полезна при отладке, потому что вы можете видеть, какие процессы открывают, какие файлы и какой файл открывается каким процессом.

Если вы не вошли в систему как root, вывод команды lsof будет очень ограничен. Рекомендуется использовать sudo, если вы вошли в систему как пользователь без полномочий root.

 

1. Перечислите все процессы, которые открыли файл

Это просто Вам просто нужно указать путь к файлу.

lsof <path_to_file>

 

2. Список всех файлов, открытых пользователем

Это удобно в многопользовательской среде. Вы можете перечислить все файлы, открытые определенным пользователем, следующим образом:

lsof -u <user_name>

 

Вы также можете указать более одного пользователя, как это:

lsof -u user1, user2

 

или вот так:

lsof -u user1 -u user2

 

3. Список всех открытых файлов в каталоге

Если вам интересно, какие из файлов были открыты в определенном каталоге, вы можете использовать команду lsof с опцией + D.

lsof +D <path_to_directory>

 

Поиск рекурсивный. Таким образом, он перечислит все открытые файлы в указанном каталоге и все его подкаталоги.

4. Перечислите все открытые файлы процессом

В этом случае вам нужно знать идентификатор процесса (pid). Если вы знаете идентификатор процесса, вы можете использовать опцию -p команды lsof, чтобы найти файлы, открытые им.

lsof -p <pid>

 

Вы также можете указать несколько идентификаторов процессов.

lsof -p pid1, pid2, pid3

 

5. Список всех файлов, открытых командой

Это особенно полезно при отладке. Предположим, вы хотите увидеть, какие файлы используются демоном http, вам просто нужно указать имя команды (httpd в нашем примере).

lsof -c <command>

 

Читать  Команда hostname в Linux с примерами

6. Найти открытый пользователем и командой или процессом

Вы можете комбинировать параметры, такие как пользователь и команда, и процесс, используя вариант -, Думайте об этом как об операторе AND. Это дает вам дополнительный фильтр при попытке сузить область поиска.

lsof -a -u user_name -c command_name

 

7. Перечислите сетевые соединения и порты с помощью команды lsof

Вы также можете использовать команду lsof для поиска открытых портов или для поиска того, какой процесс использует порт.

Вы можете подать все виды открытых портов с опцией -i:

lsof -i

 

Вывод может выглядеть так:

lsof -i
 COMMAND     PID            USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
 sshd        920            root    3u  IPv4    20507      0t0  TCP *:ssh (LISTEN)
 sshd        920            root    4u  IPv6    20535      0t0  TCP *:ssh (LISTEN)
 docker-pr  1163            root    4u  IPv6    21687      0t0  TCP *:https (LISTEN)
 docker-pr  1175            root    4u  IPv6    21717      0t0  TCP *:http (LISTEN)
 sshd       7528            root    3u  IPv4 39506588      0t0  TCP testing:ssh->212.91.91.19:58904 (ESTABLISHED)
 systemd-r 10993 systemd-resolve   12u  IPv4 20901990      0t0  UDP localhost:domain 
 systemd-r 10993 systemd-resolve   13u  IPv4 20901991      0t0  TCP localhost:domain (LISTEN)

 

Вы также можете указать тип сетевого подключения. Например, чтобы вывести список всех открытых портов TCP, вы можете использовать:

lsof -i tcp

 

Чтобы узнать, какой процесс использует определенный порт, вы можете указать номер порта:

lsof -i :<port_number>

 

Бонусный совет: использование оператора отрицания с lsof

Вы можете использовать оператор отрицания, чтобы исключить пользователя или процесс при использовании команды lsof.

Например, вы хотите перечислить все файлы, открытые пользователем, отличным от root, используйте его следующим образом:

lsof -u ^root

 

Команда lsof становится еще более полезной, когда вы используете ее с командой grep.

Читать  100 важных вопросов на собеседовании по Linux с ответами

Мы надеемся, что вы узнали что-то новое с этой статьей. Если у вас есть вопросы или предложения, пожалуйста, оставьте комментарий ниже.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно

Рекомендуемое
Есть так много вещей, о которых стоит задуматься, когда речь…
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close