Protsessi käsu lsof kasutamise juhend
Kui olete Linuxi või Unixi süsteemide sage kasutaja, olete kindlasti kuulnud fraasi "Linuxis on kõik fail". Seda võib liigitada kontseptsiooni liigseks lihtsustamiseks, kuid sellest on palju abi, et mõista, kuidas failid Linuxi süsteemis töötavad.
Kõik, mis Linuxi keskkonnas kuvatakse, ei pea olema fail. Mõnikord võib see olla protsess, see võib olla spetsiaalne fail, mis esindab riistvarateavet, katalooge ja muid asju.
See õpetus aitab teil leida kõik failid, mis on Linuxis konkreetse protsessi jaoks avatud.
Sissejuhatus lsof
Käsk
Linuxi süsteemi ilu seisneb selles, et saate terminali kaudu kogu oma süsteemi juhtida ja hallata eeldusel, et teate hästi käske. Kui käsud on teada, muutuvad kõik terminalis olevad ülesanded lihtsaks.
lsof
tähistab 'Avatud failide loend‘. Kui teate käsu pika versiooni, on teil väga lihtne mõista ja seda produktiivsel viisil kasutada.
The lsof
käsk kuvab avatud failide, pistikupesade ja torude loendid. Selle käsu abil saate hõlpsalt otsida avatud faile. Kui lsof
käsku kasutatakse ilma ühegi suvandita, see kuvab kõik avatud failid seoses töötavate aktiivsete protsessidega.
Märge: Kasutage kindlasti sudo
käskude täitmise ajal.
Kasutades The lsof
Käsk
Uurime väljundit lsof
käsk üksikasjalikult. Uurige järgmist käsku.
sudo lsof | vähem
Märge: Kui juhime otse lsof
käsku, on väljund väga suur ja võib edasiseks jätkamiseks segadust tekitada. Seetõttu olen siin kasutanud lsof | vähem
õpetuse mugavuse huvides.
Väljund:
gaurav@ubuntu:~$ sudo lsof | vähem KÄSK PID TID KASUTAJA FD TÜÜP SEADME SUURUS/VÄLJAS SÕLMME NIMI kdevtmpfs 31 root cwd DIR 0,6 4400 2 / kdevtmpfs 31 root rtd DIR 0,6 4400 2 / kdevtmpfs 31 root net/procxtw3/exe root/protxns3 DIR 8,8 4096 2 / netns 32 root rtd DIR 8,8 4096 2 / netns 32 juur txt teadmata /proc/32/exe rcu_tasks 33 root cwd DIR 8,8 4096 2 / rcu_tasks DIR 33 juur 8, 8 rt / rcu_tasks 33 root txt unknown /proc/33/exe kauditd 34 root cwd DIR 8,8 4096 2 / kauditd 34 root rtd DIR 8,8 4096 2 / kauditd 34 root txt unknown /proc/34/exe
Järgmised on atribuudid, mida kuvatakse kasutades lsof
käsk.
Parameeter | Kirjeldus |
---|---|
Käsk | Näitab faili avava käsu nime. |
PID | Faili avava protsessi protsessi identifikaator. |
TID | Lõime identifikaatori number. See võib olla lõime või ülesande number. |
Kasutaja | Kasutaja ID või selle kasutaja nimi, kes on protsessi omanik. |
FD | Näitab faili failideskriptorit. |
Tüüp | Failiga seotud sõlme tüüp. |
Seade | Näitab seadmete numbreid. |
Suurus/väljas | Näitab faili suurust baitides. |
Sõlm | Näitab kataloogi või emakataloogi sisendi numbrit. |
Nimi | Näitab failisüsteemi nime, kus protsess asub. |
Protsesside loetlemine
Kõigepealt on oluline hankida töötavad protsessid ja nende vastavad protsessi ID-d. Linux pakub mitmesuguseid käske protsesside loetlemiseks koos nende atribuutidega, nagu PID, kasutaja, kataloog jne.
Võite kasutada selliseid käske nagu üleval
, ps
, htop
, pstree
terminalis olevate protsesside loetlemiseks.
Kogu õpetuse vältel kasutan üleval
käsk seda teha. The üleval
käsk annab töötavast süsteemist dünaamilise reaalajas ülevaate. Samuti kuvatakse kõik protsessid ja lõimed, mida praegu haldab Linuxi kernel. Uurige alltoodud plokki, et kontrollida väljundit üleval
käsk.
Süntaks:
sudo top
Väljund:
gaurav@ubuntu:~$sudo top PID KASUTAJA PR NI VIRT RES SHR S %CPU %MEM AEG+ KÄSK 2703 gaurav 20 0 4286124 1.142g 103584 R 88.2 30.5 87:48.2 30.5 87:48.2 30.5 87:48.2 30.5 87:48.27 Veeb 34.41 mongod 13765 gaurav 20 0 2931568 131408 47496 S 5.9 3.3 1: 42.34 Veebisisufunktsioonid 1 root 20 0 225904 6824 4900 S 0.0 0.2 0: 27,25 systemd 2 juurviljade 20 0 0 0 0 S 0.0 0.0 0: 00.05 KThreadd 4 root 0 -20 0 0 0 I 0,0 0,0 0:00,00 kworker/0:0H 6 juur 0 -20 0 0 0 I 0,0 0,0 0:00,00 mm_percpu_wq 7 juur 20 0 0 0 0 0 S 0,0 0,0 0,8 0:01q d 0 0 I 0,0 0,0 0:22,32 rcu_sched 9 juur 20 0 0 0 0 I 0,0 0,0 0:00,00 rcu_bh 10 juur rt 0 0 0 0 S 0,0 0,0 0:03,13 migratsioon/0
Ülaltoodud plokis näeme kogu protsessiga seotud teavet ühes kohas. Siit leiame PID
mille protsessist peame kuvama avatud failid, kasutades lsof
käsk.
Kuid kui soovite teada saada ainult konkreetse protsessi protsessi ID-d ja vältida muid soovimatuid protsesse, kasutage järgmist käsku.
Süntaks:
sudo top | grep [Protsessi_nimi]
Näide:
gaurav@ubuntu:~$ üles | grep terminali 13819 gaurav 20 0 803336 19728 9160 S 0,3 0,5 0: 53,63 gnome-terminal-13819 gaurav 20 0 803336 19728 9160 S 1,0 0,5 0: 53,66 gnome-terminal-13819 gaurav 20 0 803336 19728 9160 S 0,3 0,5 0: 53,67 gnome -terminal- gaurav@ubuntu:~$
Siin oleme konkreetselt kuvanud selle protsessi protsessi ID, mille protsessi nimes on string "terminal". See meetod on kasulik, kui te ei tea protsessi täielikku nime ega PID-d.
Protsessiga seotud avatud failide kuvamine PID-i abil
Ülaltoodud plokis õppisime, kuidas hankida protsessiga seotud teavet top käsu abil. Nüüd kasutame PID
mis vastab süsteemi mis tahes protsessile ja proovige kuvada selle protsessiga seotud avatud failide loendit kasutades lsof
käsk.
Ülaltoodud väljundist võtame esile tõstetud PID 1173-le vastava protsessi. Me hakkame kasutama lsof -p [PID]
käsk seda teha.
Süntaks:
sudo lsof -p [PID]
See käsk võtab sisendiks protsessi PID ja loetleb kõik sellele PID-le vastavad failid.
Väljund:
gaurav@ubuntu:~$ sudo lsof -p 1173 lsof: HOIATUS: ei saa stat() fuse.gvfsd-fuse failisüsteemi /run/user/1000/gvfs Väljundteave võib olla puudulik. KÄSSU PID KASUTAJA FD TÜÜP SEADME SUURUS/VÄLJAS SÕLMME NIMI mongod 1173 mongodb cwd DIR 8,8 4096 2 / mongod 1173 mongodb rtd DIR 8,8 4096 2 / mongod 1173 mongodb / mongod 1173 mongodb / mongod 1173 mongodb mem REG 8,8 71776 2624380 /lib/x86_64-linux-gnu/libnss_myhostname.so.2 mongod 1173 mongodb mem REG 8,8 101168 262/46443 mongodb7-101168 262/46446-7-b/2016-1-6-lib-2-libro-1-6-lib-2-libro-1-6-lib-2-libro-gnu/ mem REG 8,8 26936 2624439 /lib/x86_64-linux-gnu/libnss_dns-2.27.so mongod 1173 mongodb mem REG 8,8 10160 mongodb 2626002 monsnnss 2626002 /lib/3b71260002/07/07/2016/08/08/08/08/09/09/09/03/04/09/08/04/2016 8,8 47568 2624441 /lib/x86_64-linux-gnu/libnss_files-2.27.so mongod 1173 mongodb mem REG 8,8 3004224 2909671 /usr/lib/locale/locale / usr/lib/locale/locale/locale/locale/locale/locale/locale/locale/locale/locale/locale/locale/local lib/x86_64-linux-gnu/libc-2.27.so mongod 1173 mongodb mem REG 8,8 144976 2624627 /lib/x86_64-linux-gnu/libpthread-2.27.so mongod 2.27.so mongod 2.27.so mongod 18lib 616, 93 1173 mem REG 26, 96 x86_64-linux-gnu/libgcc_s.so.1 mongod 1173 mongodb me m REG 8,8 1700792 2622735 /lib/x86_64-linux-gnu/libm-2.27.so mongod 1173 mongodb mem REG 8,8 14560 2621535 /lib/x86_64-libduxl-EGogod27b. 8,8 31680 2624646 /lib/x86_64-linux-gnu/librt-2.27.so mongod 1173 mongodb mem REG 8,8 2357760 2890079 /usr/lib/x86_64-linux-gnu/librtu.0. cryptutu :~$
Protsessi ID-ga 1713 jaoks avatud failid kuvatakse kasutades lsof
käsk.
Märge: GNOME kasutajad võivad kogeda allolevat hoiatust. Võite seda julgelt ignoreerida.
lsof: HOIATUS: ei saa stat() fuse.gvfsd-fuse failisüsteemi /run/user/1000/gvfs Väljundteave võib olla puudulik.
Protsessiga seotud avatud failide loend, kasutades protsessi nime
The lsof
käsk annab teile ka võimaluse loetleda avatud failid protsesside nimede abil. Nimed tuleks käsule sisestada sisendstringina. Selle valiku kasutamiseks vaadake allolevat süntaksit.
Süntaks:
sudo lsof -c [Protsessi nimi]
Näide:
sudo lsof -c mysql
Väljund:
gaurav@ubuntu:~$ sudo lsof -c mysql lsof: HOIATUS: ei saa stat() fuse.gvfsd-fuse failisüsteemi /run/user/1000/gvfs Väljundteave võib olla puudulik. COMAND PID KASUTAJA FD TÜÜP SEADME SUURUS/VÄLJAS SÕLMME NIMI mysqld 1266 mysql cwd DIR 8,8 4096 3154135 /var/lib/mysql mysqld 1266 mysql rtd DIR 8,8 /12x618tl mysql214td my2 /sbin/mysqld mysqld 1266 mysql mem REG 8,8 6288 5505444 /usr/lib/mysql/plugin/auth_socket.so mysqld 1266 mysql DEL REG 0,18 REG / DEL REG 0,18 R / 281 281 28 1 8 1 2 8 1 8 281 2812 8 aio] mysqld 1266 mysql DEL REG 0,18 28125 /[aio] mysqld 1266 mysql mem REG 8,8 47568 2624441 /lib/x86_64-linux-gnu/libnss_64-linux-gnu/libnss_74-linux-gnu/libnss_74-57ql68/72m/72m/72m/72m/72m/72m/72m/72m/72m/72M/72m/72m/72M/72M_2006_2016_201_2016_2_m_5_8_2_m_____ faili lib/x86_64-linux-gnu/libnss_nis-2.27.so mysqld 1266 mysql mem REG 8,8 39744 2624438 /lib/x86_64-linux-gnu/libnss_compat-2.27.so
Väljund on sama, milles protsessi nimetuse asemel kasutatakse protsessi ID-d.
Võrguühenduste poolt avatud failide loend
Linuxis võivad failid olla ka teie võrguühenduste, riistvaraühenduste jms teabe kujul. Saame kasutada lsof
käsk, et loetleda võrguühendusega avatud failid. Kasutage järgmist meetodit.
sudo lsof -i
Väljund:
gaurav@ubuntu:~$ sudo lsof -i KÄSK PID KASUTAJA FD TÜÜP SEADME SUURUS/VÄLJAS SÕLMME NIMI systemd-r 969 systemd-resolve 12u IPv4 17357 0t0 UDP localhost: domain systemd-r 969 systemd-resolve IP8 1:7t3 domeen (KUULA) systemd-r 969 systemd-resolve 15u IPv4 1685575 0t0 UDP ubuntu:48090->_gateway:domain avahi-dae 1028 avahi 12u IPvds 23810 0t0 UDP *: avahi 23810 0t0 UDP *: avahi 1010 DPhi2m8u 1010 DPhi-mdns Avahi-dae 1028 Avahi 14u IPv4 23812 0t0 UDP *: 58999 Avahi-dae 1028 Avahi 15u IPv6 23813 0t0 UDP *: 37512 mongod 1173 MongoDB 6u IPv4 28149 0t0 TCP localhost: 27017 (kuula) mysqld 1266 mysql 19u IPv4 25992 0t0 TCP localhost: mysql (KUULA) apache2 1283 juur 4u IPv6 28140 0t0 TCP *:http (KUULA) gaurav@ubuntu:~$
Siin näeme teavet failide kohta, mis on avatud võrguühenduse kaudu lsof -i
käsk.
Järeldus
Selles lihtsas õpetuses oleme õppinud, kuidas erinevate hõlpsasti kasutatavate meetodite abil loetleda protsessi jaoks avatud faile Linuxis. Rohkemaks kasutamiseks lsof
käsk, vaata lsof
man leht.