Hitta vilket processid som använder en port

  • Författare
  • Meddelande
Online
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10922
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Hitta vilket processid som använder en port

Inlägg12 aug 2015, 12:23

När man kodar servrar som lyssnar på olika portar så händer det att man glömmer att döda processen. Resultatet blir att nästa gång man försöker starta servern så ligger redan någon och lyssnar på porten.

Hur ska man då kunna hitta id på den process som använder porten, med syftet att döda processen och reclaima porten?

Så här kan det se ut när det går fel.

Kod: Markera allt
moshp800:serverWithRoutes$ babel-node index.js
Simple server with routes listen on port 1337.                           
Try routes / and /about and /whatever                                   
                                                                         
events.js:72                                                             
        throw er; // Unhandled 'error' event                             
              ^                                                         
Error: listen EADDRINUSE         


Vilket processid har den som använder min port, i detta fallet 1337?

Kod: Markera allt
moshp800:serverWithRoutes$ netstat -an --tcp --program | grep 1337
(Not all processes could be identified, non-owned process info                               
will not be shown, you would have to be root to see it all.)                               
tcp        0      0 0.0.0.0:1337            0.0.0.0:*               LISTEN      557/nodejs   


Ah, 557. Döda processen så jag kan reclaima porten.
Kod: Markera allt
$ kill -9 557


Borta.

Funkar på de processer som jag själv startat. Vill man ha koll på andras processer så behöver man sudo/root.
...
..:
.... /mos

tomten

Lurker

  • Inlägg: 8
  • Blev medlem: 28 sep 2015, 14:42

Re: Hitta vilket processid som använder en port

Inlägg28 sep 2015, 14:57

Kan även tipsa om kommandot "ss -tp"

Det är väldigt användbart om man vill se vilken process som använder vilken socket.
Användarvisningsbild

litemerafrukt

troubleshooter

  • Inlägg: 262
  • Blev medlem: 01 sep 2015, 09:27
  • Ort: Lund

Re: Hitta vilket processid som använder en port

Inlägg04 feb 2016, 12:48

Och startat man sin server på mac fungerar netstat annorlunda (bla --program funkar inte) men man kan använda lsof istället.

Kod: Markera allt
$ lsof -i -P | grep 1337
node      4607  Any   11u  IPv6 0xe5ef5428bce84529      0t0  TCP *:1337 (LISTEN)
Online
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10922
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Hitta vilket processid som använder en port

Inlägg03 feb 2017, 13:11

Tips. Skapa ett alias för att hitta processen som kör på ens port.

Man vill ta livet av den serverprocess som nu använder porten, men hur hittar man den?
Kod: Markera allt
$ sudo netstat -nlp | grep 1337
tcp6       0      0 :::1337                 :::*                    LISTEN      27569/nodejs


Processens PID är det sista numret, i detta fallet 27569.

Skapa ett alias, du kommer behöva kommandosekvensen lite ofta.
Kod: Markera allt
$ alias port='sudo netstat -nlp | grep'
$ port 1337
tcp6       0      0 :::1337                 :::*                    LISTEN      27569/nodejs


Du kan skapa filen ~/.bash_aliases, om den inte finns, och spara alla dina alias där, så finns de kvar nästa gång du loggar in.
...
..:
.... /mos
Online
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10922
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Hitta vilket processid som använder en port

Inlägg19 feb 2019, 16:31

Jag behövde automatisera dödandet av processen som allokerade en viss port (1337), så här blev det, inuti ett bash-skript.
Kod: Markera allt
pid=$( lsof -n -i4TCP:1337 | grep LISTEN | awk '{ print $2 }' )
[[ $pid ]] && kill $pid && echo "Killed pid '$pid' on port 1337"
...
..:
.... /mos

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 5 gäster