áttekintés
mindannyian tudjuk, hogy egy portot csak egyetlen alkalmazás vagy szolgáltatás használhat egyszerre. Néha tudnunk kell, hogy melyik folyamat hallgat egy adott porton.
ebben az oktatóanyagban különböző megközelítéseket fogunk látni a folyamat hallgatásának megtalálásához egy adott porton a Linuxban.
root Permission
Linuxban csak a root felhasználó vagy a folyamat tulajdonosa kaphatja meg a folyamat részletes adatait.,
Ha ellenőrizni szeretnénk egy folyamatot, amelyet egy adott porton hallgatunk, nem tudjuk, kihez tartozik a folyamat.
a root engedélyével minden szükséges információt megkaphatunk a folyamatról, például a folyamatazonosítóról.
ezért előfordulhat, hogy hálózati eszközeinket a root felhasználóval (vagy a sudo-val) kell elindítanunk.
a netstat
használatával a netstat parancs a net-tools csomag tagja.
a múltban számos Linux disztribúcióban előtelepítették. A net-tools csomagot azonban 2011 óta nem frissítették.,
a modern Linux kernel funkciók támogatásának hiánya és más okok miatt a net-tools csomag elavulttá vált.
Ez azt jelenti, hogy maga a netstat még mindig széles körben használatos, ezért vessünk egy pillantást arra, hogyan segíthet.
mindenekelőtt nézzük meg a netstat parancs példakimenetét:
az ltnup opciókkal a netstat megmutatja a fenti példában használt összes portot.,
vessünk egy pillantást, amit a beállítások a következők:
- l – mutasd csak hallgat aljzatok
- t – show TCP connections
- n – show-címek numerikus formában
- u – show UDP kapcsolatokat
- p – show folyamat azonosító/program neve
Ha áttekintjük a fenti kimenetet, az utolsó oszlop pontosan, hogy mit keresünk: a PID, majd a Folyamat neve figyel egy adott portot.
egyszerűen a netstat kimenetet a grep parancsba vezethetjük, hogy megkapjuk a folyamatinformációkat egy egyedi porton.,
például nézzük meg, melyik folyamat hallgat a 22-es porton:
root# netstat -ltnup | grep ':22'tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 575/sshd
SS
az előző szakaszban megvitattuk, hogy a net-tools csomag elavult.
az ss parancs a netstat parancs cseréje.
most nézzük meg, hogyan kell használni az ss parancsot, hogy megnézze, melyik folyamat hallgat a 22-es porton:
ha ellenőrizzük az opciókat, azt találjuk, hogy az SS parancsnak átadott opciók ugyanazok, mint a netstat-nak.,
Az egyetlen különbség az, hogy az SS segédprogram állami szűrőjét használtuk egy extra grep folyamat helyett a kimenet szűrésére.
a netstat parancs kimenetéhez hasonlóan a várt folyamatinformációk az utolsó oszlopban is megtalálhatók.
az lsof
használatával az lsof parancs felsorolhatja az összes megnyitott fájlt egy Linux rendszerben.,
az lsof paranccsal megkereshetjük a folyamatot egy adott port használatával a-i: port_number opcióval:
root# lsof -i :22COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEsshd 575 root 3u IPv4 19373 0t0 TCP *:ssh (LISTEN)
a fenti kimenet első négy oszlopa megmondja nekünk a folyamat nevét a 22-es porton, annak PID-jén, tulajdonosán és a fájlleírón.
Több-I :portot adhatunk az lsof parancshoz, hogy megismerjük a különböző portokon hallgatott folyamatokat:
root# lsof -i :22 -i :68COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEsshd 575 root 3u IPv4 19373 0t0 TCP *:ssh (LISTEN)dhcpcd 8822 root 10u IPv4 49601 0t0 UDP *:bootpc
iver
a fuser segédprogram megjeleníti, hogy mely folyamatok használnak megnevezett fájlokat, aljzatokat vagy fájlrendszereket., Ez benne van a psmisc csomag előre telepített számos modern Linux disztribúció alapértelmezés szerint.
ezt felhasználhatjuk egy adott porton futó folyamat információinak megtekintéséhez. Ismét nézzük meg a PID a feldolgozás hallgat TCP port 22:
root# fuser 22/tcp22/tcp: 575
a fenti kimenet elég egyszerű. Tudjuk, hogy a folyamat PID 575 hallgat TCP port 22.
azonban nem ad részletes információt a folyamatról, például mi az 575 folyamat neve? kié a folyamat? és így tovább.,
Ha meg szeretnénk szerezni további részleteket a folyamat, akkor át a “-v” opciót, hogy a fixáló parancs, hogy egy részletes kimenet:
root# fuser -v 22/tcp USER PID ACCESS COMMAND22/tcp: root 575 F.... sshd
az fuser paranccsal tudjuk azt is ellenőrizze, hogy a futó folyamat információk több TCP-vagy UDP-portok egy lövés:
root# fuser -v 22/tcp 68/udp USER PID ACCESS COMMAND22/tcp: root 575 F.... sshd68/udp: root 8822 F.... dhcpcd
Következtetés
ebben A rövid cikkben, megtanultuk, négy különböző Linux parancssoros utilities példákkal kitalálni, hogy az információt a folyamat figyel egy adott portot.,
Ezek mind nagyon hatékony eszközök a Linux parancssori arzenálunkban.