A folyamat PID-jének megkeresése egy adott Port segítségével

á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.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

Tovább az eszköztárra