Kā uzskaitīt procesam atvērtos failus operētājsistēmā Linux

Rokasgrāmata komandas “lsof” lietošanai procesam

Ja esat biežs Linux vai Unix sistēmu lietotājs, noteikti esat dzirdējis frāzi: “Linux sistēmā viss ir fails”. To var klasificēt kā pārāk vienkāršotu koncepciju, taču tas ir ļoti noderīgi, lai saprastu, kā darbojas Linux sistēmas faili.

Ne visam, kas parādās Linux vidē, ir jābūt failam. Dažreiz tas var būt process, tas var būt īpašs fails, kas atspoguļo aparatūras informāciju, direktorijus un citas lietas.

Šī apmācība palīdzēs jums atrast visus failus, kas ir atvērti konkrētam procesam operētājsistēmā Linux.

Ievads uz lsof Pavēli

Linux sistēmas skaistums ir tāds, ka jūs varat kontrolēt un pārvaldīt visu savu sistēmu, izmantojot termināli, ja vien labi zināt komandas. Kad komandas ir zināmas, visi termināļa uzdevumi kļūst par ķekatiem.

lsof apzīmē "Atvērto failu saraksts‘. Tiklīdz jūs zināt komandas garo versiju, jums kļūst ļoti viegli saprast un izmantot komandu produktīvā veidā.

The lsof komanda parāda atvērto failu, ligzdu un cauruļu sarakstus. Izmantojot šo komandu, varat viegli meklēt atvērtos failus. Kad lsof komanda tiek izmantota bez jebkādas opcijas, tā parāda visus atvērtos failus saistībā ar aktīvajiem procesiem, kas darbojas.

Piezīme: Noteikti lietojiet sudo izpildot komandas.

Izmantojot lsof Pavēli

Mēs pētīsim produkciju lsof pavēlēt detalizēti. Izpētiet šādu komandu.

sudo lsof | mazāk

Piezīme: Ja mēs tieši palaist lsof komandu, izvade būs ļoti liela un var radīt neskaidrības, lai turpinātu. Tāpēc šeit es izmantoju lsof | mazāk komandu apmācības ērtībai.

Izvade:

gaurav@ubuntu:~$ sudo lsof | mazāk KOMANDA PID TID LIETOTĀJS FD TIPA IERĪCES IZMĒRS/IZSLĒGTS MOZGLA NOSAUKUMS kdevtmpfs 31 root cwd DIR 0,6 4400 2 / kdevtmpfs 31 root rtd DIR 0,6 4400 2 / kdevtmpfs 31 root / procxt 3/exe root/netw 3 unknown DIR 8,8 4096 2 / netns 32 root rtd DIR 8,8 4096 2 / netns 32 root txt nezināms /proc/32/exe rcu_tasks 33 root cwd DIR 8,8 4096 2 / rcu_tasks DIR 33 root 8, 8 rt / rcu_tasks 33 saknes txt nezināms /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 nezināms /proc/34/exe 

Tālāk ir norādīti atribūti, kas tiek parādīti, izmantojot lsof komandu.

ParametrsApraksts
PavēliParāda tās komandas nosaukumu, kas atver failu.
PIDProcesa identifikatora numurs procesam, kas atver failu.
TIDVītnes identifikatora numurs. Tas var būt pavediens vai uzdevuma numurs.
LietotājsLietotāja ID vai tā lietotāja vārds, kurš ir procesa īpašnieks.
FDParāda faila faila deskriptoru.
TipsAr failu saistītā mezgla veids.
IerīceParāda ierīču numurus.
Izmērs/IzslēgtsParāda faila lielumu baitos.
MezglsParāda direktorija vai vecākdirektorija inodes numuru.
VārdsParāda tās failu sistēmas nosaukumu, kurā process atrodas.

Procesu uzskaitījums

Pirmkārt un galvenokārt, jums ir svarīgi iegūt darbojošos procesus un to attiecīgos procesu ID. Linux nodrošina dažādas komandas, lai uzskaitītu procesus kopā ar to atribūtiem, piemēram, PID, lietotāju, direktoriju utt.

Varat izmantot tādas komandas kā tops, ps, htop, pstree lai uzskaitītu termināļa procesus.

Apmācības laikā es izmantošu tops pavēli to darīt. The tops komanda nodrošina dinamisku reāllaika skatu par darbojošos sistēmu. Tas arī parāda visus procesus un pavedienus, ko pašlaik pārvalda Linux kodols. Izpētiet tālāk norādīto bloku, lai pārbaudītu izvadi tops komandu.

Sintakse:

sudo tops

Izvade:

gaurav@ubuntu:~$sudo top PID LIETOTĀJS 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.5 87:48.27 Tīmeklis 34,41 mongod 13765 gaurav 20 0 2931568 131408 47496 S 5.9 3.3 1: 42,34 Web Content 1 root 20 0 225904 6824 4900 S 0.0 0.2 0: 27.25 systemd 2 root 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 sakne 0 -20 0 0 0 I 0,0 0,0 0:00,00 mm_percpu_wq 7 sakne 20 0 0 0 0 0 S 0,0 0,0 0,0 kworker/0:01qd 0 0 I 0,0 0,0 0:22,32 rcu_sched 9 sakne 20 0 0 0 0 I 0,0 0,0 0:00,00 rcu_bh 10 sakne rt 0 0 0 0 S 0,0 0,0 0:03,13 migrācija/0 

Iepriekš minētajā blokā mēs varam redzēt visu ar procesu saistīto informāciju vienuviet. No šejienes mēs varam atrast PID kura procesam mums ir jāparāda atvērtie faili, izmantojot lsof komandu.

Bet, ja vēlaties uzzināt tikai konkrēta procesa procesa ID un izvairīties no citiem nevēlamiem procesiem, izmantojiet šo komandu.

Sintakse:

sudo top | grep [procesa_nosaukums]

Piemērs:

gaurav@ubuntu:~$ top | grep termināls 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 -termināls- gaurav@ubuntu:~$

Šeit mēs esam īpaši parādījuši procesa ID, kura nosaukumā ir virkne “termināls”. Šī metode ir noderīga, ja nezināt visu procesa nosaukumu vai PID.

Parādīt atvērtos failus, kas saistīti ar procesu, izmantojot PID

Iepriekš minētajā blokā mēs uzzinājām, kā iegūt ar procesu saistīto informāciju ar augšējās komandas palīdzību. Tagad mēs izmantosim PID kas atbilst jebkuram procesam sistēmā, un mēģiniet parādīt ar šo procesu saistīto atvērto failu sarakstu, izmantojot lsof komandu.

No iepriekš dotās izvades ņemsim procesu, kas atbilst izceltajam PID 1173. Mēs izmantosim lsof -p [PID] pavēli to darīt.

Sintakse:

sudo lsof -p [PID]

Šī komanda izmanto procesa PID kā ievadi un uzskaita visus failus, kas atbilst šim PID.

Izvade:

gaurav@ubuntu:~$ sudo lsof -p 1173 lsof: BRĪDINĀJUMS: nevar stat() fuse.gvfsd-fuse failu sistēma /run/user/1000/gvfs Izvades informācija var būt nepilnīga. KOMANDA PID LIETOTĀJA FD TIPA IERĪCES IZMĒRS/IZSLĒGTS MEZGLA NOSAUKUMS mongod 1173 mongodb cwd DIR 8,8 4096 2 / mongod 1173 mongodb rtd DIR 8,8 4096 2 / mongod 1173 mongodb 8,8 4096 1173 mongodb atmiņa REG 8,8 71776 2624380 /lib/x86_64-linux-gnu/libnss_myhostname.so.2 mongod 1173 mongodb atmiņa REG 8,8 101168 262/46443 mongod 7 mongo 101168 26246446 7 libo 7 libo 1 d 1 g 2 d 1 d 1 d 1 g 2 d 1 d 1 d 1 d 1 d 1 d 7 . mem REG 8,8 26936 2624439 /lib/x86_64-linux-gnu/libnss_dns-2.27.so mongod 1173 mongodb atmiņa REG 8,8 10160 2626002 mongodss 2626002 /lib/3b3b126260002 /lib/3b.2626002 / lib/x86_gnummd/x86_gnummd. 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/ lib/x86_64-linux-gnu/libc-2.27.so mongod 1173 mongodb atmiņa REG 8,8 144976 2624627 /lib/x86_64-linux-gnu/libpthread-2.27.so R mongod 2.27.so mongod 18lib 616, 93 116, 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-libdlx1-gogod 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-librav. :~$

Faili, kas ir atvērti procesam ar procesa ID 1713, tiek parādīti, izmantojot lsof komandu.

Piezīme: GNOME lietotāji var saskarties ar tālāk norādīto brīdinājumu. Jūs varat to droši ignorēt.

lsof: BRĪDINĀJUMS: nevar stat() fuse.gvfsd-fuse failu sistēma /run/user/1000/gvfs Izvades informācija var būt nepilnīga.

Ar procesu saistīto atvērto failu uzskaitījums, izmantojot procesa nosaukumu

The lsof komanda nodrošina arī iespēju uzskaitīt atvērtos failus, izmantojot procesu nosaukumus. Nosaukumi komandai jānorāda kā ievades virkne. Lai izmantotu šo opciju, skatiet tālāk norādīto sintaksi.

Sintakse:

sudo lsof -c [procesa nosaukums]

Piemērs:

sudo lsof -c mysql

Izvade:

gaurav@ubuntu:~$ sudo lsof -c mysql lsof: BRĪDINĀJUMS: nevar stat() fuse.gvfsd-fuse failu sistēma /run/user/1000/gvfs Izvades informācija var būt nepilnīga. KOMANDA PID LIETOTĀJA FD TIPA IERĪCES IZMĒRS/IZSLĒGTS MEZGLA NOSAUKUMS mysqld 1266 mysql cwd DIR 8,8 4096 3154135 /var/lib/mysql mysqld 1266 mysql rtd DIR 8,8 /2x214td 8,8 /1q2618dl mysql2618d /sbin/mysqld mysqld 1266 mysql atmiņa 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 / 28 1 6 8 ql 2812 28 8 aio] mysqld 1266 mysql DEL REG 0,18 28125 /[aio] mysql 1266 mysql atmiņa REG 8,8 47568 2624441 /lib/x86_64-linux-gnu/libnss_64-linux-gnu/libnss_ql66-8/472m/72m/5m/7-2/7-2/7-2/7-2/7_2______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 

Izvade būs tāda pati, kurā procesa nosaukuma vietā tiek izmantots procesa ID.

Failu saraksts, ko atver tīkla savienojumi

Operētājsistēmā Linux faili var būt arī informācijas veidā par jūsu tīkla savienojumiem, aparatūras savienojumiem utt. Mēs varam izmantot lsof komandu, lai uzskaitītu tīkla savienojuma atvērtos failus. Izmantojiet tālāk norādīto metodi.

sudo lsof -i

Izvade:

gaurav@ubuntu:~$ sudo lsof -i KOMANDA PID LIETOTĀJA FD TIPA IERĪCES IZMĒRS/IZSLĒGTS MEZGLA NOSAUKUMS systemd-r 969 systemd-resolve 12u IPv4 17357 0t0 UDP lokālais resursdators: domēns systemd-r 969 systemd-resolve 8 vietējais 10st-r 969 systemd-resolve 8 domēns (KLAUSĪTIES) systemd-r 969 systemd-resolve 15u IPv4 1685575 0t0 UDP ubuntu:48090->_gateway:domain avahi-dae 1028 avahi 12u IPvds *3810 0t0 UDP *: avahi 23810 0t0 UDP *: avahi 10 DPhi2m8u 10 DPhi2m1010 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: 27.017 (klausīties) mysqld 1266 mysql 19u IPv4 25992 0t0 TCP localhost: mysql (KLAUSĪTIES) apache2 1283 sakne 4u IPv6 28140 0t0 TCP *:http (KLAUSIES) gaurav@ubuntu:~$

Šeit mēs varam redzēt informāciju par failiem, kurus atver tīkla savienojums, izmantojot lsof -i komandu.

Secinājums

Šajā vienkāršajā apmācībā mēs esam iemācījušies, kā uzskaitīt procesam Linux atvērtos failus, izmantojot dažādas viegli lietojamas metodes. Lai vairāk izmantotu lsof komandu, skatiet lsof man lapa.