Kaip įtraukti į sąrašą atidarytų failų, skirtų procesui sistemoje „Linux“.

„lsof“ komandos naudojimo procesui vadovas

Jei esate dažnas Linux ar Unix sistemų naudotojas, tikriausiai girdėjote frazę: „Linux sistemoje viskas yra failas“. Tai gali būti klasifikuojama kaip pernelyg supaprastinta koncepcija, tačiau pasirodo, kad tai labai naudinga suprasti, kaip veikia Linux sistemos failai.

Ne viskas, kas rodoma Linux aplinkoje, turi būti failas. Kartais tai gali būti procesas, tai gali būti specialus failas, vaizduojantis aparatinės įrangos informaciją, katalogus ir kitus dalykus.

Ši pamoka padės jums rasti visus failus, kurie yra atidaryti tam tikram procesui sistemoje „Linux“.

Įvadas į lsof komandą

Linux sistemos grožis yra tas, kad galite valdyti ir valdyti visą savo sistemą per terminalą, jei gerai žinote komandas. Kai komandos yra žinomos, visos užduotys terminale tampa paprasti.

lsof reiškia 'Atidarytų failų sąrašas‘. Kai žinote ilgą komandos versiją, jums tampa labai lengva suprasti ir produktyviai naudoti komandą.

The lsof komanda rodo atidarytų failų, lizdų ir vamzdžių sąrašus. Naudodami šią komandą galite lengvai ieškoti atidarytų failų. Kai lsof Komanda naudojama be jokios parinkties, ji rodo visus atidarytus failus, susijusius su aktyviais vykdomais procesais.

Pastaba: Įsitikinkite, kad naudojate sudo vykdydamas komandas.

Naudojant lsof komandą

Mes išnagrinėsime išvestį lsof komandą išsamiai. Išstudijuokite šią komandą.

sudo lsof | mažiau

Pastaba: Jei tiesiogiai vykdysime lsof komandą, išvestis bus labai didelė ir gali sukelti painiavą tęsti. Vadinasi, čia aš naudojau lsof | mažiau komandą mokymo programos patogumui.

Išvestis:

gaurav@ubuntu:~$ sudo lsof | mažiau KOMANDA PID TID VARTOTOJAS FD TIPAS ĮRENGINIO DYDIS / IŠJUNGTAS MAZGŲ PAVADINIMAS kdevtmpfs 31 root cwd DIR 0,6 4400 2 / kdevtmpfs 31 root rtd DIR 0,6 4400 2 / kdevtmpfs 31 root / procxtw3 / exe root / procxt 3 unknown DIR 8,8 4096 2 / netns 32 root rtd DIR 8,8 4096 2 / netns 32 root txt nežinomas / proc/32/exe rcu_tasks 33 root cwd DIR 8,8 4096 2 / rcu_tasks DIR 33 root 8, 2 rt / rcu_tasks 33 root txt nežinomas /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 nežinomas /proc/34/exe 

Toliau pateikiami atributai, kurie rodomi naudojant lsof komandą.

Parametrasapibūdinimas
komandąRodo komandos, kuri atidaro failą, pavadinimą.
PIDProceso, kuris atidaro failą, proceso identifikatoriaus numeris.
TIDGijos identifikatoriaus numeris. Tai gali būti gijos arba užduoties numeris.
VartotojasVartotojo ID arba vartotojo, kuris yra proceso savininkas, vardas.
FDRodo failo failo aprašą.
TipasSu failu susieto mazgo tipas.
ĮrenginysRodo įrenginių numerius.
Dydis/IšjungtaRodo failo dydį baitais.
MazgasRodo įvesties numerį kataloge arba pirminiame kataloge.
vardasRodo failų sistemos, kurioje yra procesas, pavadinimą.

Procesų sąrašas

Visų pirma, svarbu gauti vykdomus procesus ir atitinkamus jų procesų ID. „Linux“ teikia daugybę komandų, skirtų procesams išvardyti kartu su jų atributais, tokiais kaip PID, vartotojas, katalogas ir kt.

Galite naudoti tokias komandas kaip viršuje, ps, htop, pstree kad būtų išvardyti terminale esantys procesai.

Per visą mokymo programą aš naudosiu viršuje komandą tai padaryti. The viršuje komanda suteikia dinamišką veikiančios sistemos vaizdą realiuoju laiku. Jame taip pat rodomi visi procesai ir gijos, šiuo metu valdomos „Linux“ branduolio. Išstudijuokite toliau pateiktą bloką, kad patikrintumėte išvestį viršuje komandą.

Sintaksė:

sudo viršus

Išvestis:

gaurav@ubuntu:~$sudo top PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2703 gaurav 20 0 4286124 1.142g 103584 R 88.2 30.5 87:48.2 30.2 87:48.08 Website 34.41 mongod 13765 gaurav 20 0 2931568 131408 47496 S 5,9 3,3 1: 42,34 interneto turinio 1 šaknies 20 0 225904 6824 4900 S 0,0 0,2 0: 27.25 systemd 2 šaknies 20 0 0 0 0 S 0.0 0.0 0: 00.05 KThreadd 4 šaknų 0 -20 O 0 0 I 0,0 0,0 0:22,32 rcu_sched 9 šaknis 20 0 0 0 0 I 0,0 0,0 0:00,00 rcu_bh 10 šaknis rt 0 0 0 0 S 0,0 0,0 0:03,13 migracija/0 

Aukščiau esančiame bloke galime matyti visą su procesu susijusią informaciją vienoje vietoje. Iš čia galime rasti PID kurio proceso metu turime rodyti atidarytus failus naudodami lsof komandą.

Bet jei norite sužinoti tik konkretaus proceso ID ir išvengti kitų nepageidaujamų procesų, naudokite šią komandą.

Sintaksė:

sudo top | grep [proceso_pavadinimas]

Pavyzdys:

gaurav@ubuntu:~$ į viršų | grep terminalas 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 -terminalas- gaurav@ubuntu:~$

Čia mes specialiai parodėme proceso ID, kurio pavadinime yra eilutė „terminalas“. Šis metodas yra naudingas, kai nežinote viso proceso pavadinimo arba PID.

Atvirų failų, susijusių su procesu, rodymas naudojant PID

Aukščiau esančiame bloke sužinojome, kaip gauti su procesu susijusią informaciją naudojant viršutinę komandą. Dabar mes naudosime PID atitinkantį bet kurį sistemos procesą ir pabandykite parodyti atidarytų failų, susijusių su tuo procesu, sąrašą naudodami lsof komandą.

Iš aukščiau pateiktos išvesties paimkime procesą, atitinkantį paryškintą PID 1173. Mes naudosime lsof -p [PID] komandą tai padaryti.

Sintaksė:

sudo lsof -p [PID]

Ši komanda naudoja proceso PID kaip įvestį ir pateikia visų failų, atitinkančių šį PID, sąrašą.

Išvestis:

gaurav@ubuntu:~$ sudo lsof -p 1173 lsof: ĮSPĖJIMAS: can't stat() fuse.gvfsd-fuse failų sistema /run/user/1000/gvfs Išvesties informacija gali būti neišsami. KOMANDA PID NAUDOTOJAS FD TIPAS ĮRENGINIO DYDIS / IŠJUNGTAS MAZGŲ PAVADINIMAS mongod 1173 mongodb cwd DIR 8,8 4096 2 / mongod 1173 mongodb rtd DIR 8,8 4096 2 / mongod 1173 / mongod 1173 / mongod / mongod 1173 mongodb 8. 1173 mongodb atmintis REG 8,8 71776 2624380 /lib/x86_64-linux-gnu/libnss_myhostname.so.2 mongod 1173 mongodb atmintis REG 8,8 101168 262/46443 mongodb7-101168 262/46443-101168-2624646-7B-1-6-lib-64-1-6-2-libro-6/4-646-1-6-libns- atmintis REG 8,8 26936 2624439 /lib/x86_64-linux-gnu/libnss_dns-2.27.so mongod 1173 mongodb atmintis REG 8,8 10160 2626002 mongodbsnsnsnsnsnsns2626002 /lib/3b. 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/ lib/x86_64-linux-gnu/libc-2.27.so mongod 1173 mongodb atmintis REG 8,8 144976 2624627 /lib/x86_64-linux-gnu/libpthread-2.27.so R mongod 18lib 616, 93 / 616, 93 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-linuxl-7.2mgonud27b. 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/librt-gnu/librt. :~$

Failai, kurie yra atidaryti procesui su proceso ID 1713, rodomi naudojant lsof komandą.

Pastaba: GNOME vartotojai gali susidurti su toliau pateiktu įspėjimu. Galite saugiai to nepaisyti.

lsof: ĮSPĖJIMAS: negali stat() fuse.gvfsd-fuse failų sistemos /run/user/1000/gvfs Išvesties informacija gali būti neišsami.

Atidarytų failų, susijusių su procesu, sąrašas naudojant proceso pavadinimą

The lsof komanda taip pat suteikia galimybę įtraukti atidarytų failų sąrašą naudojant procesų pavadinimus. Vardai turėtų būti pateikti komandai kaip įvesties eilutė. Norėdami naudoti šią parinktį, žr. toliau pateiktą sintaksę.

Sintaksė:

sudo lsof -c [proceso pavadinimas]

Pavyzdys:

sudo lsof -c mysql

Išvestis:

gaurav@ubuntu:~$ sudo lsof -c mysql lsof: ĮSPĖJIMAS: can't stat() fuse.gvfsd-fuse failų sistema /run/user/1000/gvfs Išvesties informacija gali būti neišsami. KOMANDOS PID VARTOTOJO FD TIPAS ĮRENGINIO DYDIS / IŠJUNGTAS MAZGŲ PAVADINIMAS mysqld 1266 mysql cwd DIR 8,8 4096 3154135 /var/lib/mysql mysqld 1266 mysql rtd DIR 8,8 /1ql216t8dl mysql2198d /sbin/mysqld mysqld 1266 mysql atmintis REG 8,8 6288 5505444 /usr/lib/mysql/plugin/auth_socket.so mysqld 1266 mysql DEL REG 0,18 REG DEL REG 0,18 REG 0,18 R 2 6 8 1 8 1 2 8 1 8 1 8 1 8 aio] mysqld 1266 mysql DEL REG 0,18 28125 /[aio] mysqld 1266 mysql atmintis REG 8,8 47568 2624441 /lib/x86_64-linux-gnu/libnss_64-linux-gnu/libnss_74-linux-gnu/libnss_74-5m72m/72m/5m/2/7/2/7/2/2007-07-27-2007-2008-2010-2007-2007-2007-2008 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 

Išvestis bus tokia pati, kaip proceso ID, o ne proceso pavadinimas.

Failų, kuriuos atidarė tinklo ryšiai, sąrašas

„Linux“ sistemoje failai taip pat gali būti informacijos apie jūsų tinklo ryšius, aparatinės įrangos jungtis ir kt. Mes galime naudoti lsof komanda, kad išvardintų failus, atidarytus tinklo ryšiu. Naudokite šį metodą.

sudo lsof -i

Išvestis:

gaurav@ubuntu:~$ sudo lsof -i KOMANDA PID VARTOTOJAS FD TIPAS ĮRENGINIO DYDIS/IŠJUNGTAS MAZGŲ PAVADINIMAS systemd-r 969 systemd-resolve 12u IPv4 17357 0t0 UDP localhost:domenas systemd-r 969 systemd-resolve IP8 17t3 domenas (KLAUSYTI) systemd-r 969 systemd-resolve 15u IPv4 1685575 0t0 UDP ubuntu:48090->_vartai:domenas avahi-dae 1028 avahi 12u IPv4 23810 0t0 UDP nts 23810 0t0 UDP *: avahi 1010 DPhi8 avahi-Dae 1028 avahi 14U IPv4 23.812 0t0 UDP *: 58.999 avahi-Dae 1028 avahi 15U IPv6 23.813 0t0 UDP *: 37.512 mongod 1173 mongodb 6U IPv4 28149 0t0 TCP localhost: 27.017 (KLAUSOSI) mysqld 1266 MySQL 19u IPv4 25.992 0t0 TCP localhost: mysql (KLAUSYTI) apache2 1283 root 4u IPv6 28140 0t0 TCP *:http (KLAUSYTI) gaurav@ubuntu:~$

Čia matome informaciją apie failus, kuriuos atidaro tinklo ryšys naudojant lsof -i komandą.

Išvada

Šioje paprastoje pamokoje sužinojome, kaip įtraukti į sąrašą atidarytus proceso failus Linux sistemoje naudojant įvairius metodus, kuriuos paprasta naudoti. Norėdami daugiau naudoti lsof komandą, žr lsof Vyro puslapis.