Vraag Hoe weet u welk programma naar een bepaalde poort luistert?


Ik vermoed dat een programma luistert naar de poort 8000 op mijn machine.

Wanneer ik het volgende commando uitvoer, krijg ik de volgende foutmelding:

> python -m SimpleHTTPServer
# Lots of python error
socket.error: [Errno 98] Address already in use

Als ik een andere poort gebruik (8000 is de standaard), de webserver werkt prima.

Als ik ren wget localhost:8000 vanaf de opdrachtregel keert het terug 404 Not Found.

Wat kan ik doen (of welke tools beschikbaar zijn) om te achterhalen welk programma naar de poort luistert 8000en vanaf daar waar dat programma is geconfigureerd?


291
2018-04-06 08:36


oorsprong




antwoorden:


Open uw terminal en typ als

lsof -i :8000

die opdracht toont u de toepassing die door die poort met PID wordt gebruikt. (Als er geen resultaten via lopen sudo omdat je misschien geen toestemming hebt voor bepaalde processen.)

Met poort 8000 (bijvoorbeeldpython3 -m http.server):

$ lsof -i :8000
COMMAND  PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
python3 3269 user    3u  IPv4 1783216      0t0  TCP *:8000 (LISTEN)

En poort 22 (SSH):

$ sudo lsof -i :22
COMMAND  PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
sshd     998 root    3u  IPv4 1442116      0t0  TCP *:ssh (LISTEN)
sshd     998 root    4u  IPv6 1442118      0t0  TCP *:ssh (LISTEN)

Ik hoop dat het helpt.


189
2018-04-06 08:50



Dit werkt ook op OSX voor wat het waard is ..... - reevesy
Het toevoegen -s TCP:LISTEN beperkt het resultaat tot de daadwerkelijke luistercontactdoos en het bijbehorende proces. - jhermann
Als u zoekt naar poort 8000, wordt deze geretourneerd PID 1889? wat - CodyBugstein
Ja, er is service met PID 1889 via poort 8881. mis ik iets? - Ten-Coin
@Imray de voorbeeldzoekopdrachten voor poort 8881. De kolom PID bevat de proces-ID's en de kolom NAME bevat de poorten. - Freek de Bruijn


U kunt netstat gebruiken om te zien welk proces naar welke poort luistert.

U kunt deze opdracht gebruiken voor een volledig detail:

sudo netstat -peanut

als je precies wilt weten welke naar poort 8000 luistert, kun je dit gebruiken:

sudo netstat -peanut | grep ":8000 "

Er is geen proces dat voor netstat kan verbergen.


329
2018-04-06 08:58



netstat -peanut is gemakkelijker te onthouden dan netstat -taupen! - Douglas B. Staple
Een goede ! - Bewerkte het antwoord gewoon om uw opmerking weer te geven. Dank je. - Antoine Rodriguez
'fuser -k 8000 / tcp' om die poort te bevrijden - Jay Modi
als u in kolom "PID / Programmanaam" streepjes ziet in plaats van een procesnaam, bent u vergeten "sudo" toe te voegen - v.shashenko
dus het zijn peanuts eh - prusswan


Als u het antwoord van @ 33833 wilt uitleggen, kunt u gedetailleerde informatie krijgen, bijvoorbeeld:

$ lsof -i :8000
COMMAND  PID  USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
squid3  1289 proxy   15u  IPv6 14810490      0t0  TCP *:8000 (LISTEN)

$ ps -fp 1289
UID        PID  PPID  C STIME TTY          TIME CMD
proxy     1289     1  0 09:48 ?        00:00:00 /usr/sbin/squid3 -N -f /etc/squid-deb-proxy/squid-deb-proxy.conf

Ik zie precies dat inktvis het proces is, maar het is de mijne squid-deb-proxy dat is de haven aan het innemen.

Nog een goed voorbeeld van een Java-app:

$ lsof -i :4242
COMMAND  PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
java    3075 root   86u  IPv4    12019      0t0  TCP *:4242 (LISTEN)

$ ps -fp 3075
UID        PID  PPID  C STIME TTY          TIME CMD
root      3075     1 15 May24 ?        3-16:07:25 /usr/local/crashplan/jre/bin/java -Dfile.encoding=UTF-8 -Dapp=CrashPlanService -DappBaseName=CrashPl

Je kunt het zien lsof (LiSt Open Files) dat het java is, wat minder dan nuttig is. Het uitvoeren van de ps commando met de PID kunnen we meteen zien dat het CrashPlan is.


164
2018-06-17 15:55



In één opdracht: lsof -t -i :8000 | xargs ps -fp - Brett Y
Ik moest een voorvoegsel gebruiken sudo  maar daarna werkte het voor mij. Bedankt. - Dwayne Crooks
opmerking: zonder sudo je krijgt geen fout, je krijgt eenvoudig niets als antwoord. - Frank Nocke


Proberen ss van iproute2 pakket:

ss -nlp | grep 8000

10
2018-04-06 08:44



ss heeft ook zijn eigen filtermogelijkheden: ss -nlp '( sport = :8000 )'. - GnP


Een andere manier om te gebruiken socklist van procinfo pakket:

man socklist

BESCHRIJVING
socklist is een Perl-script dat u een lijst geeft met alle open sockets, met opsomming van typen, poort,          inode, uid, pid, fd en het programma waartoe het behoort.

sudo socklist 

type  port      inode     uid    pid   fd  name
tcp     53      28749       0   1721    5  dnsmasq
tcp    631      29190       0   2433   11  cupsd
tcp  42376      82230    1000   1345   84  firefox
tcp  49048      71686    1000   1345   67  firefox
tcp  41248      81672    1000   1345  119  firefox
tcp  54676      84558    1000   1345   73  firefox
udp  56107      66258       0   3268   20  dhclient
udp  40804      17857     107    679   14  avahi-daemon
udp     53      28748       0   1721    4  dnsmasq
udp     68      67427       0   3268    6  dhclient
udp    631      19692       0    765    8  cups-browsed
udp   5353      17855     107    679   12  avahi-daemon

5
2018-06-29 10:23





U kunt nmap gebruiken.

Het is erg belangrijk om te weten welke poorten open zijn op uw pc, dit   is niet alleen nuttig voor Linux, maar ook voor andere besturingssystemen,   Linux heeft veel tools om te controleren welke poorten het meest geopend zijn   common is nmap, een commandoregel-tool, maar bestaat ook a   Grafische voorzijde en doe het als je dat liever hebt.1

om het te installeren, drukt u gewoon op Ctrl+alt+T op je toetsenbord om Terminal te openen. Wanneer het wordt geopend, voert u de onderstaande opdracht uit:

sudo apt-get install nmap

Ga naar voor meer informatie over nmap en andere hulpprogramma's Hier

1Bron:garron.me


2
2018-04-06 08:46



nmap zal u alleen vertellen dat een poort open is, niet welk proces het heeft geopend. - Andrew Burns
Ik klikte door naar je bron om te lezen [nmap] tries to guess which service is listening on each port, but it can make mistakes vlak voor het suggereert een echte methode om erachter te komen welk proces de socket bezit. - GnP
@gnp U wilt misschien ook een kijkje nemen Deze. - Mitch♦
@Mitch dat deed ik. Het OP moet de exacte PID van een proces op het lokale systeem kennen. Nmap is hier niet de juiste tool, zelfs niet met service- en versiedetectie. Ofwel komt het overeen met een item in de nmaps-database, dat OP nog steeds in het donker laat weten welk proces moet worden gedood of opnieuw geconfigureerd, of het zal niet en OP zal een mooie vingerafdruk en een link naar insecure.org hebben - GnP