10-lsof-Command-Examples-in-Linux

10 примеров команд lsof в Linux

Linux

10 примеров команд lsof в Linux. В этой статье мы рассмотрим команду lsof с практическими примерами. lsof расшифровывается как «LiSt Open Files» и используется для того чтобы понять, какие файлы открываются какими процессами. Как мы все знаем, Linux/Unix рассматривает все как файлы (в том числе каналы, сокеты, каталоги, устройства и т.д.). Одна из причин использования команды lsof — это ситуация когда диск не может быть размонтирован, так как возникает ошибка: «Файлы используются«. С помощью этой команды мы можем легко определить используемые файлы.

 

1. Вывод всех открытых файлов с помощью команды lsof

В приведенном ниже примере lsof в Linux будет показан список открытых файлов. В данном выводе отображаются такие столбцы, как Command, PID, USER, FD, TYPE и т.д.

# lsof

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root cwd DIR 253,0 4096 2 /
init 1 root rtd DIR 253,0 4096 2 /
init 1 root txt REG 253,0 145180 147164 /sbin/init
init 1 root mem REG 253,0 1889704 190149 /lib/libc-2.12.so
init 1 root 0u CHR 1,3 0t0 3764 /dev/null
init 1 root 1u CHR 1,3 0t0 3764 /dev/null
init 1 root 2u CHR 1,3 0t0 3764 /dev/null
init 1 root 3r FIFO 0,8 0t0 8449 pipe
init 1 root 4w FIFO 0,8 0t0 8449 pipe
init 1 root 5r DIR 0,10 0 1 inotify
init 1 root 6r DIR 0,10 0 1 inotify
init 1 root 7u unix 0xc1513880 0t0 8450 socket

 

 

Разделы и их значения говорят сами за себя. Однако мы рассмотрим столбцы FD&TYPE более подробно:

FD — обозначает дескриптор файла и принимает следующие значения как:

  • cwd — текущий рабочий каталог
  • rtd — корневой каталог
  • txt — текст программы (код и данные)
  • mem  файл памяти

 

Кроме того, в столбцах FD такие номера, как 1u, являются фактическим дескриптором файла, а за ним следует один из флагов u, r, w как режим доступа:

  • r — доступа для чтения.
  • w — доступа для записи.
  • u — чтения и записи.

 

TYPE — файлов и их идентификация:

  • DIR — директория
  • REG — обычный файл
  • CHR — специальный символьный файл.
  • FIFO — First In First Out

 

 

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

Приведенная ниже команда отобразит список всех открытых файлов пользователя sedicomm:

# lsof -u sedicomm

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1838 sedicomm cwd DIR 253,0 4096 2 /
sshd 1838 sedicomm rtd DIR 253,0 4096 2 /
sshd 1838 sedicomm txt REG 253,0 532336 188129 /usr/sbin/sshd
sshd 1838 sedicomm mem REG 253,0 19784 190237 /lib/libdl-2.12.so
sshd 1838 sedicomm mem REG 253,0 122436 190247 /lib/libselinux.so.1
sshd 1838 sedicomm mem REG 253,0 255968 190256 /lib/libgssapi_krb5.so.2.2
sshd 1838 sedicomm mem REG 253,0 874580 190255 /lib/libkrb5.so.3.3

 

 

3. Поиск процессов, работающих на конкретном порту

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

# lsof -i TCP:22

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1471 root 3u IPv4 12683 0t0 TCP *:ssh (LISTEN)
sshd 1471 root 4u IPv6 12685 0t0 TCP *:ssh (LISTEN)

 

 

4. Вывод открытых файлов IPv4 и IPv6

В приведенном ниже примере lsof в Linux показаны только сетевые файлы IPv4 и IPv6, выведенные с помощью отдельных команд:

# lsof -i 4

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 1203 rpc 6u IPv4 11326 0t0 UDP *:sunrpc
rpcbind 1203 rpc 7u IPv4 11330 0t0 UDP *:954
rpcbind 1203 rpc 8u IPv4 11331 0t0 TCP *:sunrpc (LISTEN)
avahi-dae 1241 avahi 13u IPv4 11579 0t0 UDP *:mdns
avahi-dae 1241 avahi 14u IPv4 11580 0t0 UDP *:58600

 

 

# lsof -i 6

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 1203 rpc 9u IPv6 11333 0t0 UDP *:sunrpc
rpcbind 1203 rpc 10u IPv6 11335 0t0 UDP *:954
rpcbind 1203 rpc 11u IPv6 11336 0t0 TCP *:sunrpc (LISTEN)
rpc.statd 1277 rpcuser 10u IPv6 11858 0t0 UDP *:55800
rpc.statd 1277 rpcuser 11u IPv6 11862 0t0 TCP *:56428 (LISTEN)
cupsd 1346 root 6u IPv6 12112 0t0 TCP localhost:ipp (LISTEN)

 

 

5. Вывод открытых файлов диапазона портов TCP 1-1024

Для вывода всех запущенных процессов открытых файлов TCP-порт меняется в диапазоне 1-1024.

# lsof -i TCP:1-1024

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 1203 rpc 11u IPv6 11336 0t0 TCP *:sunrpc (LISTEN)
cupsd 1346 root 7u IPv4 12113 0t0 TCP localhost:ipp (LISTEN)
sshd 1471 root 4u IPv6 12685 0t0 TCP *:ssh (LISTEN)
master 1551 root 13u IPv6 12898 0t0 TCP localhost:smtp (LISTEN)
sshd 1834 root 3r IPv4 15101 0t0 TCP 192.168.0.2:ssh->192.168.0.1:conclave-cpp (ESTABLISHED)
sshd 1838 sedicomm 3u IPv4 15101 0t0 TCP 192.168.0.2:ssh->192.168.0.1:conclave-cpp (ESTABLISHED)
sshd 1871 root 3r IPv4 15842 0t0 TCP 192.168.0.2:ssh->192.168.0.1:groove (ESTABLISHED)
httpd 1918 root 5u IPv6 15991 0t0 TCP *:http (LISTEN)
httpd 1918 root 7u IPv6 15995 0t0 TCP *:https (LISTEN)

 

 

6. Исключение пользователей с использованием символа «^»

В этом примере lsof в Linux мы исключили пользователя root. Вы же можете исключить конкретного пользователя, используя «^» с командой приведённой ниже:

# lsof -i -u^root

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 1203 rpc 6u IPv4 11326 0t0 UDP *:sunrpc
rpcbind 1203 rpc 7u IPv4 11330 0t0 UDP *:954
rpcbind 1203 rpc 8u IPv4 11331 0t0 TCP *:sunrpc (LISTEN)
rpcbind 1203 rpc 9u IPv6 11333 0t0 UDP *:sunrpc
rpcbind 1203 rpc 10u IPv6 11335 0t0 UDP *:954
rpcbind 1203 rpc 11u IPv6 11336 0t0 TCP *:sunrpc (LISTEN)
avahi-dae 1241 avahi 13u IPv4 11579 0t0 UDP *:mdns
avahi-dae 1241 avahi 14u IPv4 11580 0t0 UDP *:58600
rpc.statd 1277 rpcuser 5r IPv4 11836 0t0 UDP *:soap-beep
rpc.statd 1277 rpcuser 8u IPv4 11850 0t0 UDP *:55146
rpc.statd 1277 rpcuser 9u IPv4 11854 0t0 TCP *:32981 (LISTEN)
rpc.statd 1277 rpcuser 10u IPv6 11858 0t0 UDP *:55800
rpc.statd 1277 rpcuser 11u IPv6 11862 0t0 TCP *:56428 (LISTEN)

 

 

7. Узнайте, какие файлы и команды использует пользователь?

Приведенный ниже пример показывает, что пользователь sedicomm использует такие команды, как ping и /etc.

# lsof -i -u sedicomm

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 1839 sedicomm cwd DIR 253,0 12288 15 /etc
ping 2525 sedicomm cwd DIR 253,0 12288 15 /etc

 

 

8. Вывод списка всех сетевых подключений

Следующая команда с опцией «-i» выводит список всех сетевых подключений «LISTENING & ESTABLISHED»:

# lsof -i

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 1203 rpc 6u IPv4 11326 0t0 UDP *:sunrpc
rpcbind 1203 rpc 7u IPv4 11330 0t0 UDP *:954
rpcbind 1203 rpc 11u IPv6 11336 0t0 TCP *:sunrpc (LISTEN)
avahi-dae 1241 avahi 13u IPv4 11579 0t0 UDP *:mdns
avahi-dae 1241 avahi 14u IPv4 11580 0t0 UDP *:58600
rpc.statd 1277 rpcuser 11u IPv6 11862 0t0 TCP *:56428 (LISTEN)
cupsd 1346 root 6u IPv6 12112 0t0 TCP localhost:ipp (LISTEN)
cupsd 1346 root 7u IPv4 12113 0t0 TCP localhost:ipp (LISTEN)
sshd 1471 root 3u IPv4 12683 0t0 TCP *:ssh (LISTEN)
master 1551 root 12u IPv4 12896 0t0 TCP localhost:smtp (LISTEN)
master 1551 root 13u IPv6 12898 0t0 TCP localhost:smtp (LISTEN)
sshd 1834 root 3r IPv4 15101 0t0 TCP 192.168.0.2:ssh->192.168.0.1:conclave-cpp (ESTABLISHED)
httpd 1918 root 5u IPv6 15991 0t0 TCP *:http (LISTEN)
httpd 1918 root 7u IPv6 15995 0t0 TCP *:https (LISTEN)
clock-app 2362 narad 21u IPv4 22591 0t0 TCP 192.168.0.2:45284->www.gov.com:http (CLOSE_WAIT)
chrome 2377 narad 61u IPv4 25862 0t0 TCP 192.168.0.2:33358->maa03s04-in-f3.1e100.net:http (ESTABLISHED)
chrome 2377 narad 80u IPv4 25866 0t0 TCP 192.168.0.2:36405->bom03s01-in-f15.1e100.net:http (ESTABLISHED)

 

 

9. Поиск по PID

В приведенном ниже примере показано только те выводы, чей PID равен 1:

# lsof -p 1

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root cwd DIR 253,0 4096 2 /
init 1 root rtd DIR 253,0 4096 2 /
init 1 root txt REG 253,0 145180 147164 /sbin/init
init 1 root mem REG 253,0 1889704 190149 /lib/libc-2.12.so
init 1 root mem REG 253,0 142472 189970 /lib/ld-2.12.so

 

 

10. Завершение всей активности конкретного пользователя

Иногда вам может потребоваться завершить все процессы для конкретного пользователя. Команда ниже завершает все процессы пользователя sedicomm:

# kill -9 `lsof -t -u sedicomm`

 

 

Примечание: здесь невозможно привести пример всех доступных опций, это руководство знакомит вас, как можно использовать команду lsof. Вы можете обратиться к странице справки команды lsof, чтобы узнать больше: man lsof.

 

 

Спасибо за уделенное время на прочтение статьи «10 примеров команд lsof в Linux»!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Ciscoкурсы по кибербезопасности,  полный курс по кибербезопасностикурсы DevNet (программируемые сети) от Академии Ciscoкурсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).

Курсы Cisco и Linux с трудоустройством!

Спешите подать заявку! Осталось пару мест. Группы стартуют 22 июля, а следующая 19 августа, 23 сентября, 21 октября, 25 ноября, 16 декабря, 20 января, 24 февраля.
Что Вы получите?
  • Поможем стать экспертом в сетевом администрировании и получить международные сертификаты Cisco CCNA Routing & Switching или Linux LPI.
  • Предлагаем проверенную программу и учебник экспертов из Cisco Networking Academy и Linux Professional Institute, сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и сделать карьеру. 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проводим вечерние онлайн-лекции на нашей платформе или обучайтесь очно на базе Киевского офиса.
  • Спросим у вас об удобном времени для практик и подстроимся: понимаем, что времени учиться мало.
  • Если хотите индивидуальный график — обсудим и осуществим.
  • Выставим четкие дедлайны для самоорганизации. Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
А еще поможем Вам:
  • отредактировать резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроим на работу в Cisco по программе Cisco Incubator, New Graduate и Experienced. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco CCNA Routing & Switching и Linux LPI, подайте заявку или получите бесплатную консультацию.
Linux

Больше похожих постов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения

Самое читаемое
Меню