Găsirea PID-ul Procesului Folosind un Port Specific


Prezentare

știm cu toții că un port poate fi utilizat numai de către o singură aplicație sau un serviciu în același timp. Uneori trebuie să știm ce proces ascultă pe un anumit port.

în acest tutorial, vom vedea diferite abordări pentru a găsi procesul de ascultare pe un anumit port în Linux.

permisiune root

în Linux, numai utilizatorul rădăcină sau proprietarul procesului poate obține informațiile detaliate ale procesului.,

când vrem să verificăm un proces ascultând pe un anumit port, nu știm cui aparține procesul.

cu permisiunea root, putem obține toate informațiile necesare despre proces, de exemplu, identificatorul procesului.prin urmare, este posibil să fie necesar să pornim instrumentele noastre de rețea cu utilizatorul rădăcină (sau cu sudo).

folosind netstat

comanda netstat este un membru al pachetului net-tools.

în trecut, a fost preinstalat în multe distribuții Linux. Cu toate acestea, pachetul net-tools nu a fost actualizat din 2011.,din cauza lipsei sale de suport pentru caracteristicile moderne ale kernelului Linux și din alte motive, pachetul net-tools a devenit învechit.acestea fiind spuse, netstat în sine este încă utilizat pe scară largă, așa că să aruncăm o privire la modul în care poate ajuta.

În primul rând, să vedem un exemplu de ieșire a comenzii netstat:

cu opțiunile ltnup, netstat ne arată toate porturile utilizate în exemplul de mai sus.,

Să aruncăm o privire la ce opțiuni înseamnă:

  • l – show asculta numai prize
  • t – show conexiuni TCP
  • n – arată adrese într-o formă numerică
  • u – show UDP conexiuni
  • p – show proces id-ul/numele programului

Dacă vom examina mai sus de ieșire, ultima coloană este exact ceea ce căutăm: PID-ul și numele Procesului asculta pe un anumit port.

putem pur și simplu conducta de ieșire netstat la comanda grep pentru a obține informațiile de proces pe un port individual.,de exemplu, să vedem ce proces ascultă pe portul 22:

root# netstat -ltnup | grep ':22'tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 575/sshd

folosind ss

în secțiunea anterioară, am discutat că pachetul net-tools este învechit.

comanda ss este înlocuirea comenzii netstat.acum, să vedem cum să folosim comanda ss pentru a vedea ce proces ascultă pe portul 22:

dacă verificăm opțiunile, descoperim că opțiunile pe care le-am trecut la comanda ss sunt aceleași cu cele pe care le-am trecut la netstat.,singura diferență este că am folosit filtrul de stare al utilitarului ss în loc de un proces grep suplimentar pentru a filtra ieșirea.

Similar cu ieșirea comenzii netstat, informațiile despre proces așteptate se află și în ultima coloană.

folosind lsof

comanda lsof poate lista toate fișierele deschise într-un sistem Linux.,

putem folosi comanda lsof să găsiți proces folosind un anumit port cu -i :port_number opțiune:

root# lsof -i :22COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEsshd 575 root 3u IPv4 19373 0t0 TCP *:ssh (LISTEN)

primele patru coloane din cele de mai sus de ieșire spune-ne numele procesului de ascultare pe portul 22 și PID, proprietar, și descriptorul de fișier.putem trece multiple-i: port la comanda lsof pentru a afla procesele de ascultare pe diferite porturi:

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

folosind fuser

utilitarul fuser afișează ce procese folosesc fișiere numite, prize sau sisteme de fișiere., Este inclus în pachetul psmisc și preinstalat în mod implicit pe multe distribuții Linux moderne.putem folosi acest lucru pentru a vizualiza informațiile procesului care rulează pe un anumit port. Din nou, să aflăm PID – ul procesării ascultarea portului TCP 22:

root# fuser 22/tcp22/tcp: 575

ieșirea de mai sus este destul de simplă. Știm că procesul cu PID 575 ascultă pe portul TCP 22.

cu toate acestea, nu ne spune informații detaliate despre proces, de exemplu, care este numele procesului 575? cine deține procesul? și așa mai departe.,

Dacă vrem să obțină mai multe detalii despre proces, putem trece „-v” opțiune pentru a cuptorului de comandă pentru a avea o verbose de ieșire:

root# fuser -v 22/tcp USER PID ACCESS COMMAND22/tcp: root 575 F.... sshd

Utilizarea unității de fuziune comandă, putem verifica, de asemenea, procesul de funcționare informații pe mai multe TCP sau UDP într-o singură lovitură:

root# fuser -v 22/tcp 68/udp USER PID ACCESS COMMAND22/tcp: root 575 F.... sshd68/udp: root 8822 F.... dhcpcd

Concluzie

În acest scurt articol, am învățat patru tipuri diferite de Linux utilitati linie de comandă cu exemple pentru a afla informații de procesul de a asculta pe un anumit port.,

toate sunt instrumente foarte puternice pentru a avea în arsenalul nostru pe linia de comandă Linux.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Sari la bara de unelte