översikt
vi vet alla att en port endast kan användas av en enda applikation eller tjänst samtidigt. Ibland behöver vi veta vilken process som lyssnar på en viss port.
i den här handledningen ser vi olika sätt att hitta processen att lyssna på en viss port i Linux.
root-behörighet
i Linux kan endast root-användaren eller processägaren få detaljerad information om processen.,
När vi vill kontrollera en process som lyssnar på en viss port vet vi inte vem processen tillhör.
med root-behörighet kan vi få all nödvändig information om processen, till exempel processidentifieraren.
därför kan vi behöva starta våra nätverksverktyg med root-användaren (eller med sudo).
använda netstat
netstat-kommandot är medlem i net-tools-paketet.
tidigare kom det förinstallerat i många Linux-distributioner. Paketet net-tools har dock inte uppdaterats sedan 2011.,
på grund av dess brist på stöd för moderna Linux-kärnfunktioner och andra skäl har net-tools-paketet blivit föråldrat.
som sagt, netstat själv används fortfarande i stor utsträckning, så låt oss ta en titt på hur det kan hjälpa.
låt oss först och främst se ett exempelutmatning av netstat-kommandot:
med alternativen ltnup visar netstat oss alla portar som används i ovanstående exempel.,
låt oss ta en titt på vad alternativen betyder:
- l – visa endast lyssningsuttag
- t – Visa TCP – anslutningar
- n – Visa adresser i numerisk form
- u – visa UDP-anslutningar
- p-visa process-id/programnamn
om vi granskar ovanstående utmatning är den sista kolumnen precis vad vi letar efter: PID-och processnamn som lyssnar på på en viss hamn.
vi kan helt enkelt leda netstat-utgången till grep-kommandot för att få processinformationen på en enskild port.,
låt oss till exempel se vilken process som lyssnar på port 22:
root# netstat -ltnup | grep ':22'tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 575/sshd
använda ss
i föregående avsnitt diskuterade vi att net-tools-paketet är föråldrat.
ss-kommandot ersätter netstat-kommandot.
låt oss nu se hur du använder ss-kommandot för att se vilken process som lyssnar på port 22:
om vi kontrollerar alternativen finner vi att alternativen vi passerade till ss-kommandot är desamma som vi passerade till netstat.,
den enda skillnaden är att vi använde tillståndsfiltret för ss-verktyget istället för en extra grep-process för att filtrera utmatningen.
i likhet med utmatningen från netstat-kommandot ligger den förväntade processinformationen också i den sista kolumnen.
använda lsof
kommandot lsof kan lista alla öppna filer i ett Linux-system.,
vi kan använda kommandot lsof för att hitta processen med en specifik port med alternativet-i :port_number:
root# lsof -i :22COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEsshd 575 root 3u IPv4 19373 0t0 TCP *:ssh (LISTEN)
de fyra första kolumnerna i ovanstående utmatning berättar processnamnet som lyssnar på port 22 och dess PID, ägare och filbeskriptorn.
vi kan skicka multiple-i :port till lsof-kommandot för att ta reda på processerna som lyssnar på olika portar:
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
använda fuser
fuser-verktyget visar vilka processer som använder namngivna filer, uttag eller filsystem., Det ingår i psmisc paketet förinstallerat på många moderna Linux-distributioner som standard.
Vi kan använda detta för att visa informationen i processen som körs på en viss port. Återigen låt oss ta reda på PID för bearbetningen lyssna TCP port 22:
root# fuser 22/tcp22/tcp: 575
ovanstående utgång är ganska enkelt. Vi vet att processen med PID 575 lyssnar på TCP-port 22.
det berättar dock inte detaljerad information om processen, till exempel Vad heter process 575? Vem äger processen? och så vidare.,
om vi vill få mer information om processen kan vi skicka alternativet ”-v” till fuser-kommandot för att få en verbose-utgång:
root# fuser -v 22/tcp USER PID ACCESS COMMAND22/tcp: root 575 F.... sshd
med hjälp av fuser-kommandot kan vi också kontrollera processinformationen som körs på flera TCP-eller UDP-portar i ett skott:
root# fuser -v 22/tcp 68/udp USER PID ACCESS COMMAND22/tcp: root 575 F.... sshd68/udp: root 8822 F.... dhcpcd
slutsats
i den här korta artikeln har vi lärt oss fyra olika Linux kommandoradsverktyg med exempel för att räkna ut informationen i processen som lyssnar på en viss port.,
de är alla mycket kraftfulla verktyg att ha i vår arsenal på Linux kommandoraden.