Wurde ein "Netzwerk-Neustart" ausgeführt, zeigt netstat keine offenen Ports an, der Server meldet weiterhin, dass der Port verwendet wird

0

Ich mache einige Web-Entwicklung in Django (Python). Das Programm führt einen eigenen Entwicklungsserver auf Port 8000 aus. Ich habe den Server ausgeschaltet und muss ihn jetzt neu starten. Es wird jedoch die Meldung "Fehler: Dieser Port wird bereits verwendet" angezeigt.

Ich habe ein sudo /etc/init.d/network restart eth0 und die Rückkehr war:

Shutting down network interfaces:
Setting up network interfaces:
    eth0      Startmode is 'manual' -> skipping                                               skipped
    eno16777736 device: Advanced Micro Devices, Inc. 
    eno16777736 DHCP4 client (dhcpcd) is running
    eno16777736 IP address: 192.168.163.128/24
    eno16777736 DHCP6 client (dhclient6) is running
    eno16777736 . . . but is still waiting for data
    eno16777736       valid_lft forever preferred_lft forever IP address: 192.168.163.128/24
    eno16777736 is up                                                                         done
    lo        
    lo       valid_lft forever preferred_lft forever IP address: 127.0.0.1/8
    lo        is up                                                                         done

und dann rennen sudo netstat -np | grep 8000 gibt nichts zurück. Wenn ich jedoch versuche, den Server erneut auszuführen, wird derselbe Fehler angezeigt. Ein Neustart des Computers behebt das Problem vollständig, aber ich kann das nicht jedes Mal tun.

RedRaven
quelle

Antworten:

1

Immer wenn mir das passiert, renne ich ps aux | grep ruby und finden Sie die Liste der Dienste, die meinen Kriterien entsprechen. In meinem Fall mache ich die Ruby on Rails-Entwicklung, damit ich sie verwenden kann grep ruby.

enter image description here

Sobald ich meine gefunden habe PID (zweite Spalte), führe ich den Befehl aus kill -9 PID

enter image description here

Dadurch wird der Prozess abgebrochen, und ich kann meinen Dienst über denselben Port neu starten.

kobaltz
quelle
Danke, das funktioniert und kommt dem sehr nahe, was ich tue (d. H. Python und Django)
RedRaven
0

Sie vergessen die Option "-a" für nestat. Andernfalls gibt es mit nur "-np" nur "nicht hörende" Sockets (auch bekannt als die verbundenen Sockets). Versuchen Sie es also mit "-npa", um sicherzugehen, dass Sie die vollständigen Daten erhalten (sowohl hörende als auch nicht hörende).

Davon abgesehen würde ich für den Fall vorschlagen, dass Sie Folgendes tun:

lsof | grep TCP | grep 8000

Wenn Sie lsof installiert haben.

Wenn der Server alle Netzwerkschnittstellen abhört (oder abhören möchte), wartet er möglicherweise noch auf das Loopback-Gerät. Also mein Vorschlag ist, wie erwähnt, mit lsof zu versuchen.

fede.evol
quelle