Это наша постоянная серия команд Linux, и в этой статье мы рассмотрим lsof команда с практическими примерами. lsof значение «LiSt Open Files» используется, чтобы узнать, какие файлы открыты каким процессом. Как мы все знаем Linux / Unix считает все как файлы (трубы, Розетки, каталоги, устройства так далее). Одна из причин использовать lsof команда - это когда диск не может быть размонтирован, поскольку он говорит, что файлы используются. С помощью этой команды мы можем легко определить используемые файлы.
В приведенном ниже примере он покажет длинный список открытых файлов, некоторые из которых извлечены для лучшего понимания, в каких столбцах отображаются такие столбцы, как Командование, PID, ПОЛЬЗОВАТЕЛЬ, FD, ТИП и т.п.
# lsof КОМАНДНЫЙ ПИД ПОЛЬЗОВАТЕЛЬ FD ТИП РАЗМЕР УСТРОЙСТВА / ВЫКЛ. ИМЯ УЗЛА. init 1 корень cwdDIR253,0 4096 2 / init 1 кореньrtdDIR253,0 4096 2 / init 1 кореньтекстREG 253,0 145180 147164 / sbin / init. init 1 корень мемREG 253,0 1889704 190149 /lib/libc-2.12.so. init 1 корень 0u CHR 1,3 0t0 3764 / dev / null. init 1 корень 1uCHR 1,3 0t0 3764 / dev / null. init 1 корень 2u CHR 1,3 0t0 3764 / dev / null. init 1 корень 3r ФИФО 0,8 0т0 8449 труба. init 1 корень 4w ФИФО 0,8 0т0 8449 труба. init 1 корень 5r DIR 0,10 0 1 inotify. init 1 корень 6r DIR 0,10 0 1 inotify. init 1 root 7u unix 0xc1513880 0t0 8450 сокет
Разделы и их значения говорят сами за себя. Однако мы рассмотрим FD И ТИП колонки точнее.
FD - обозначает дескриптор файла и может видеть некоторые значения как:
Также в FD номера столбцов, такие как 1u фактический дескриптор файла, за которым следуют u, r, w его режима как:
ТИП - файлов и их идентификация.
Следующая команда отобразит список всех открытых файлов пользователя. Tecmint.
# lsof -u tecmintКОМАНДНЫЙ ПИД ПОЛЬЗОВАТЕЛЬ FD ТИП РАЗМЕР УСТРОЙСТВА / ВЫКЛ. ИМЯ УЗЛА. sshd 1838 tecmint cwd DIR 253,0 4096 2 / sshd 1838 tecmint rtd DIR 253,0 4096 2 / sshd 1838 tecmint txt REG 253,0 532336 188129 / usr / sbin / sshd. sshd 1838 tecmint mem REG 253,0 19784 190237 /lib/libdl-2.12.so. sshd 1838 tecmint mem REG 253,0 122436 190247 /lib/libselinux.so.1. sshd 1838 tecmint mem REG 253,0 255968 190256 /lib/libgssapi_krb5.so.2.2. sshd 1838 tecmint mem REG 253,0 874580 190255 /lib/libkrb5.so.3.3
Чтобы узнать весь запущенный процесс определенного порта, просто используйте следующую команду с опцией -я. В приведенном ниже примере будут перечислены все запущенные процессы порта. 22.
# lsof -i TCP: 22КОМАНДНЫЙ ПИД ПОЛЬЗОВАТЕЛЬ FD ТИП РАЗМЕР УСТРОЙСТВА / ВЫКЛ. ИМЯ УЗЛА. sshd 1471 root 3u IPv4 12683 0t0 TCP *: ssh (СЛУШАТЬ) sshd 1471 root 4u IPv6 12685 0t0 TCP *: ssh (СЛУШАТЬ)
В приведенном ниже примере показаны только IPv4 и IPv6 сетевые файлы открываются отдельными командами.
# lsof -i 4КОМАНДНЫЙ ПИД ПОЛЬЗОВАТЕЛЬ FD ТИП РАЗМЕР УСТРОЙСТВА / ВЫКЛ. ИМЯ УЗЛА. 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 (СЛУШАТЬ) avahi-dae 1241 avahi 13u IPv4 11579 0t0 UDP *: mdns. avahi-dae 1241 avahi 14u IPv4 11580 0t0 UDP *: 58600# lsof -i 6КОМАНДНЫЙ ПИД ПОЛЬЗОВАТЕЛЬ FD ТИП РАЗМЕР УСТРОЙСТВА / ВЫКЛ. ИМЯ УЗЛА. 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 (СЛУШАТЬ) rpc.statd 1277 rpcuser 10u IPv6 11858 0t0 UDP *: 55800. rpc.statd 1277 rpcuser 11u IPv6 11862 0t0 TCP *: 56428 (СЛУШАТЬ) cupsd 1346 root 6u IPv6 12112 0t0 TCP localhost: ipp (СЛУШАТЬ)
Чтобы перечислить весь запущенный процесс открытых файлов TCP Порт варьируется от 1-1024.
# lsof -i TCP: 1-1024КОМАНДНЫЙ ПИД ПОЛЬЗОВАТЕЛЬ FD ТИП РАЗМЕР УСТРОЙСТВА / ВЫКЛ. ИМЯ УЗЛА. rpcbind 1203 rpc 11u IPv6 11336 0t0 TCP *: sunrpc (СЛУШАТЬ) cupsd 1346 root 7u IPv4 12113 0t0 TCP localhost: ipp (СЛУШАТЬ) sshd 1471 root 4u IPv6 12685 0t0 TCP *: ssh (СЛУШАТЬ) master 1551 root 13u IPv6 12898 0t0 TCP localhost: smtp (СЛУШАТЬ) sshd 1834 root 3r IPv4 15101 0t0 TCP 192.168.0.2:ssh->192.168.0.1:conclave-cpp (УСТАНОВЛЕН) sshd 1838 tecmint 3u IPv4 15101 0t0 TCP 192.168.0.2:ssh->192.168.0.1:conclave-cpp (УСТАНОВЛЕН) sshd 1871 root 3r IPv4 15842 0t0 TCP 192.168.0.2:ssh->192.168.0.1:groove (УСТАНОВЛЕН) httpd 1918 root 5u IPv6 15991 0t0 TCP *: http (СЛУШАТЬ) httpd 1918 root 7u IPv6 15995 0t0 TCP *: https (СЛУШАТЬ)
Здесь мы исключили корень Пользователь. Вы можете исключить конкретного пользователя, используя ‘^’ с помощью команды, как показано выше.
# lsof -i -u ^ кореньКОМАНДНЫЙ ПИД ПОЛЬЗОВАТЕЛЬ FD ТИП РАЗМЕР УСТРОЙСТВА / ВЫКЛ. ИМЯ УЗЛА. 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 (СЛУШАТЬ) 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 (СЛУШАТЬ) 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 *: мыло-звуковой сигнал. rpc.statd 1277 rpcuser 8u IPv4 11850 0t0 UDP *: 55146. rpc.statd 1277 rpcuser 9u IPv4 11854 0t0 TCP *: 32981 (СЛУШАТЬ) rpc.statd 1277 rpcuser 10u IPv6 11858 0t0 UDP *: 55800. rpc.statd 1277 rpcuser 11u IPv6 11862 0t0 TCP *: 56428 (СЛУШАТЬ)
В примере ниже показан пользователь Tecmint использует команду вроде пинг и /etc каталог.
# lsof -i -u tecmint КОМАНДНЫЙ ПИД ПОЛЬЗОВАТЕЛЬ FD ТИП РАЗМЕР УСТРОЙСТВА / ВЫКЛ. ИМЯ УЗЛА. bash 1839 tecmint cwd DIR 253,0 12288 15 и т. д. ping 2525 tecmint cwd DIR 253,0 12288 15 и т. д.
Следующая команда с опцией '-я' показывает список всех сетевых подключений ‘ПРОСЛУШИВАНИЕ И УСТАНОВЛЕНИЕ ».
# lsof -iКОМАНДНЫЙ ПИД ПОЛЬЗОВАТЕЛЬ FD ТИП РАЗМЕР УСТРОЙСТВА / ВЫКЛ. ИМЯ УЗЛА. 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 (СЛУШАТЬ) 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 (СЛУШАТЬ) cupsd 1346 root 6u IPv6 12112 0t0 TCP localhost: ipp (СЛУШАТЬ) cupsd 1346 root 7u IPv4 12113 0t0 TCP localhost: ipp (СЛУШАТЬ) sshd 1471 root 3u IPv4 12683 0t0 TCP *: ssh (СЛУШАТЬ) master 1551 root 12u IPv4 12896 0t0 TCP localhost: smtp (СЛУШАТЬ) master 1551 root 13u IPv6 12898 0t0 TCP localhost: smtp (СЛУШАТЬ) sshd 1834 root 3r IPv4 15101 0t0 TCP 192.168.0.2:ssh->192.168.0.1:conclave-cpp (УСТАНОВЛЕН) httpd 1918 root 5u IPv6 15991 0t0 TCP *: http (СЛУШАТЬ) httpd 1918 root 7u IPv6 15995 0t0 TCP *: https (СЛУШАТЬ) часы-приложение 2362 нарад 21u IPv4 22591 0t0 TCP 192.168.0.2:45284->www.gov.com: http (CLOSE_WAIT) хром 2377 нарад 61u IPv4 25862 0t0 TCP 192.168.0.2:33358->maa03s04-in-f3.1e100.net: http (УСТАНОВЛЕНО) хром 2377 нарад 80u IPv4 25866 0t0 TCP 192.168.0.2:36405->bom03s01-in-f15.1e100.net: http (УСТАНОВЛЕНО)
В приведенном ниже примере показано только чье PID является 1 [Один].
# lsof -p 1КОМАНДНЫЙ ПИД ПОЛЬЗОВАТЕЛЬ FD ТИП РАЗМЕР УСТРОЙСТВА / ВЫКЛ. ИМЯ УЗЛА. init 1 корневой 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
Иногда вам может потребоваться убить все процессы для определенного пользователя. Команда ниже убьет все процессы Tecmint Пользователь.
# kill -9 `lsof -t -u tecmint`
Примечание: Здесь невозможно привести пример всех доступных вариантов, это руководство предназначено только для того, чтобы показать, как lsof можно использовать команду. Вы можете обратиться к странице руководства lsof команда, чтобы узнать больше об этом. Пожалуйста, поделитесь ею, если вы сочтете эту статью полезной, в нашем поле для комментариев ниже.