Welke app gebruikt deze poort? Zoek het uit met lsof op de Mac
Met lsof ziet u welk proces op een TCP-poort luistert. Dat helpt bij de melding Address already in use, bijvoorbeeld wanneer u een lokale ontwikkelserver probeert te starten.
Bekijk de opdrachten in actie 10 seconden
Druk op afspelen: de opdrachten verschijnen letter voor letter. U kunt pauzeren en het beeld vergroten.
Stap voor stap
Controleer de poort uit de foutmelding
Open Terminal, bijvoorbeeld via Spotlight. Voer de opdracht uit met Return. Vervang 8765 door de poort uit uw foutmelding. Wilt u de oefening hieronder volgen, laat dan 8765 staan.
lsof -nP -iTCP:8765 -sTCP:LISTEN -FpcnControle: Bij een gevonden luisterproces ziet u regels met onder meer p, c en n. Verschijnt er niets en keert de prompt terug, dan heeft lsof met deze rechten geen passend TCP-luisterproces gevonden.
Maak desgewenst een eigen luisterproces
Alleen voor de oefening: als stap 1 geen luisterproces op 8765 toont, open dan een tweede Terminal-venster met Command-N en voer daar deze opdracht uit. nc wacht uitsluitend op verbindingen via het lokale adres 127.0.0.1. Laat dit venster open. Bij een bind-fout stopt u de oefening; kies dan een andere vrije poort in alle opdrachten.
nc -l 127.0.0.1 8765Controle: Er verschijnt geen nieuwe prompt: nc wacht. Deze oefening start geen webserver en maakt de poort niet via uw wifi-adres bereikbaar.
Lees de procesgegevens in het eerste venster
Ga terug naar het eerste venster en herhaal de zoekopdracht. Bij een bestaand probleem slaat u de oefenstap over en leest u meteen de gevonden gegevens. PID betekent proces-ID: het nummer van één actief proces.
lsof -nP -iTCP:8765 -sTCP:LISTEN -FpcnControle: In de oefening staat na p het PID, na c de naam nc en na n het adres 127.0.0.1:8765. De extra f-regel is het nummer van de geopende bestandsdescriptor; dat is geen PID.
Vraag alleen het procesnummer op
Gebruik deze variant wanneer u alleen het PID wilt noteren. Er kunnen meerdere nummers verschijnen wanneer meerdere processen aan de selectie voldoen. Controleer de naam met de vorige opdracht voordat u een proces identificeert.
lsof -nP -iTCP:8765 -sTCP:LISTEN -t
Het procesnummer uit dezelfde sessie, nu zonder de overige velden. Controle: In deze oefening verschijnt hetzelfde ene procesnummer als na p. De opdracht beëindigt het proces niet.
Stop uw oefenproces en controleer opnieuw
Ga naar het tweede venster waar uw eigen nc wacht en druk op Control-C. Herhaal in het eerste venster de opdracht hieronder. Bij een echte app sluit u de app normaal af; bij uw eigen ontwikkelserver gebruikt u diens oorspronkelijke terminalvenster.
lsof -nP -iTCP:8765 -sTCP:LISTEN -FpcnControle: Na het stoppen van onze oefening verscheen geen uitvoer meer. Verschijnt er toch een proces, lees dan opnieuw de naam; een ander proces kan de poort inmiddels gebruiken.
Wat selecteert deze opdracht?
| Onderdeel | Betekenis |
|---|---|
-nP |
Toont numerieke adressen en poorten, zonder ze naar host- of dienstnamen om te zetten. |
-iTCP:8765 |
Selecteert TCP-verbindingen voor poort 8765. |
-sTCP:LISTEN |
Beperkt de uitkomst tot processen die op nieuwe TCP-verbindingen wachten. |
-Fpcn |
Vraagt procesnummer, programmanaam en verbindingsnaam op als afzonderlijke velden. lsof geeft daarbij ook een f-regel. |
-t |
Toont uitsluitend procesnummers. |
Een poort is een genummerd aansluitpunt voor netwerkverkeer. Hetzelfde nummer kan bij TCP iets anders betekenen dan bij UDP. Deze opdracht onderzoekt alleen TCP; hij lost geen UDP-conflict op. De selectie kan zowel IPv4- als IPv6-luisterprocessen tonen.
Geen resultaat, maar nog steeds een fout?
Controleer eerst het exacte poortnummer en lees eventuele foutmeldingen van lsof. Uw rechten kunnen beperken welke processen zichtbaar zijn. Geen uitvoer is daarom geen algemene garantie dat elke app op die poort kan starten. Ook een onjuist bind-adres kan een server verhinderen te starten.
Herkent u het gevonden programma niet, sluit het dan niet op goed geluk af. Een procesnummer kan later opnieuw worden gebruikt. Kies waar mogelijk een andere poort voor uw eigen server, of achterhaal eerst welke app het proces beheert. Een automatische startvoorziening kan een beëindigd proces bovendien opnieuw starten.
LISTEN zegt dat een proces wacht op verbindingen. Het bewijst niet dat een website een goed
HTTP-antwoord geeft. Voor die volgende controle kunt u
HTTP onderzoeken met curl.
