Това е нашата текуща поредица от Linux команди и в тази статия ще прегледаме lsof команда с практически примери. lsof смисъл „Отворени файлове на LiSt“ се използва, за да разберете кои файлове са отворени по кой процес. Както всички знаем 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 корен memREG 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 FIFO 0,8 0t0 8449 тръба. init 1 корен 4w FIFO 0,8 0t0 8449 тръба. init 1 корен 5r DIR 0,10 0 1 inotify. init 1 корен 6r DIR 0,10 0 1 inotify. init 1 корен 7u unix 0xc1513880 0t0 8450 цокъл
Разделите и неговите стойности се обясняват сами. Ще прегледаме обаче FD & TYPE колони по -точно.
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
За да разберете целия текущ процес на конкретен порт, просто използвайте следната команда с опция -i. Примерът по -долу ще изброи всички работещи процеси на порта 22.
# lsof -i TCP: 22КОМАНДА ПИД ПОТРЕБИТЕЛ FD ТИП УСТРОЙСТВО РАЗМЕР/ИЗКЛ. ИМЕ НА УЗЛА. sshd 1471 root 3u IPv4 12683 0t0 TCP *: ssh (LISTEN) sshd 1471 root 4u IPv6 12685 0t0 TCP *: ssh (LISTEN)
В примера по -долу е показано само 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 (LISTEN) 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 (LISTEN) rpc.statd 1277 rpcuser 10u IPv6 11858 0t0 UDP *: 55800. rpc.statd 1277 rpcuser 11u IPv6 11862 0t0 TCP *: 56428 (LISTEN) cupd 1346 root 6u IPv6 12112 0t0 TCP localhost: ipp (LISTEN)
За да изброите целия текущ процес на отворени файлове на TCP Портът варира от 1-1024.
# lsof -i TCP: 1-1024КОМАНДА ПИД ПОТРЕБИТЕЛ FD ТИП УСТРОЙСТВО РАЗМЕР/ИЗКЛ. ИМЕ НА УЗЛА. rpcbind 1203 rpc 11u IPv6 11336 0t0 TCP *: sunrpc (LISTEN) cupd 1346 root 7u IPv4 12113 0t0 TCP локален хост: ipp (LISTEN) sshd 1471 root 4u IPv6 12685 0t0 TCP *: ssh (LISTEN) master 1551 root 13u IPv6 12898 0t0 TCP локален хост: smtp (LISTEN) 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 (LISTEN) httpd 1918 root 7u IPv6 15995 0t0 TCP *: https (LISTEN)
Тук сме изключили корен потребител. Можете да изключите конкретен потребител с помощта ‘^’ с команда, както е показано по -горе.
# 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 (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 *: сапунен сигнал. 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)
Примерът по -долу показва потребителя 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 /и т.н.
Следващата команда с опция '-I' показва списъка с всички мрежови връзки "СЛУШАНЕ И УСТАНОВЕНО '.
# 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 (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) cupd 1346 root 6u IPv6 12112 0t0 TCP localhost: ipp (LISTEN) cupd 1346 root 7u IPv4 12113 0t0 TCP локален хост: 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 локален хост: smtp (LISTEN) 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 (LISTEN) httpd 1918 root 7u IPv6 15995 0t0 TCP *: https (LISTEN) часовник-приложение 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 (УСТАНОВЕН) chrome 2377 narad 80u IPv4 25866 0t0 TCP 192.168.0.2:36405->bom03s01-in-f15.1e100.net: http (УСТАНОВЕН)
Примерът по -долу показва само чий PID е 1 [Едно].
# lsof -p 1КОМАНДА ПИД ПОТРЕБИТЕЛ FD ТИП УСТРОЙСТВО РАЗМЕР/ИЗКЛ. ИМЕ НА УЗЛА. init 1 root cwd DIR 253,0 4096 2 / init 1 корен rtd DIR 253,0 4096 2 / init 1 корен 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 може да се използва командата. Можете да се обърнете към man страница на lsof заповядайте да знаете повече за него. Моля, споделете го, ако намерите тази статия за полезна чрез полето ни за коментари по -долу.