Ich habe eine red5 server (JAVA) läuft auf meinem Linux-Server.Linux: Wie kille ich Programme, die Port 1935 benutzen?
Manchmal wird der Server heruntergefahren. Wenn ich versuche, es neu zu starten, erhalte ich einen Fehler:
"Binding Fehler, dieser Port ist alerady im Einsatz".
Also versuche ich, den Server mit killall zu töten -9 java und versuchen, den Server neu zu starten: gleichen Fehler.
Ich muss eine Weile warten (ca. 2-3 Minuten) und neu starten: das funktioniert.
Ich muss nur wissen, warum, wenn ich den Prozess abbringe, ich immer noch 2-3 Minuten warten muss, bevor Port 1935 frei ist und ich den Server wieder laufen lassen kann.
Gibt es eine Möglichkeit, diesen Prozess sofort zu beenden und den Port freizugeben?
ich nicht glaube die Antworten, die SIGKILL für eine fehlgeschlagene Säuberung des Ports verantwortlich machen. Das Betriebssystem weiß genau, dass der Prozess weg ist und gibt seine Ressourcen in der üblichen Weise ab. Der Standardweg für einen gerade geschlossenen TCP-Listenport ist für einige Zeit nicht verfügbar, um Verbindungen mit dem falschen Server auszuschließen. Dies kann am einfachsten durch die Verwendung von SO_REUSEADDR, wie in Justins Antwort erwähnt, vermieden werden. –