ServerSocket beendet mit PuTTy

TheJavaKid

Top Contributor
Hallo,

ich habe einen kleinen Java Chat geschrieben, der über einen Server läuft - funktioniert alles.

Ich greife mit PuTTy auf den Server zu und starte die jar die den Server darstellt mit "java -jar Server.jar"

Das funktioniert aber alles nur solange wie PuTTy geöffnet ist - schließe ich PuTTy, beendet auch der Prozess, der mit Threading und Endlosschleife realisiert ist

Wie verhindere ich, daß der Prozess beendet wird, wenn ich PuTTy schließe, sprich, der Prozess dauerhaft am Server läuft ?

CentOS 5 läuft darauf

Danke schonmal
 
es gibt dafür das tool "screen" ...
alternativ reicht auch ein "&" ans ende des befehls setzen ... ist aber eher unsauber wenn man sich nicht die pid speichert und im notfall mit kill abbrechen zu können
 
Ok, lol, hat sich gerade erledigt - ich hab das ganze mal mit dem Terminal von WinSCP gestartet - WinSCP ist daraufhin abgestürtzt, aber der Webserver rennt noch

Wenn trotzdem wer ne Idee hat, warum PuTTy dabei rumspackt, gerne dazuschreiben
 
Wenn trotzdem wer ne Idee hat, warum PuTTy dabei rumspackt, gerne dazuschreiben

Das ist kein Fehler von Putty sonder ein Feature von SSH. Der SSH-Daemon räumt beim schließen der Verbindung alle zu der Session gehörenden Prozesse auf. Wenn du einen Prozess starten willst der nicht zusammen mit der Verbindung beendet wird kannst du das z.b. mit Hilfe von [c]nohup java -jar Server.jar[/c] erreichen.
 
Ich denke mal, es wär am korrektesten/sinnvollsten, wenn man so einen Service/Dienst, welcher in Java geschrieben ist, unter Linux als solchen einrichten könnte.

Damit der Dienst auch automatisch beim Booten gestartet wird. Server sind so, die müssen auch ab und zu mal neu starten 😉
Es gibt ja so Fälle wie
  • Systemcrash (zum Glück selten geworden)
  • Zwingender Neustart nach Updates (eher häufiger der Fall)
  • Stromausfall
  • etc.
Wenn Murphies Gesetz noch zutrifft, passiert sowas meist dann, wenn du grade Feierabend gemacht hast, ausgehst oder schlafen gegangen bist.

Im Ernst - es würd mich auch interessieren, wie man so ein Java-Programm unter Linux als Dienst einrichten könnte, wobei es bei Derivate gibt, wo diese unterschiedlich eingerichtet und gestarten werden.

In diesem Forum habe ich zumindest einen Link zu einer kostenpflichtigen Lösung gefunden: Java Service Wrapper - Java Service Wrapper Download.
Der Thread dazu ist hier zu finden: http://www.java-forum.org/java-basics-anfaenger-themen/46864-dienste-java.html

Gruß

Egon
 
Gibts auch eine Möglichkeit einen laufenden Java-Server wieder abzubrechnen, nachträglich mit SSH ?

Du bist mit diesen Fragen in einem Linux Forum besser aufgehoben. Wenn du dich auf einem Linux-System bewegen möchtest, solltest du dich rudimentär damit auskennen.... Prozesse starten, forken, beenden, überwachen, Ausgaben umleiten, Umgebung konfigurieren, ...
 
wie ich sagte : "screen"

du startest eine neue session in dem du einfach "screen" eingibst und return drückst ... dann noch mal return und du hast ne neue session ...

dann startest du ganz normal dein server übers java-command ... und löst mit "STRG + A + D" die session ...

dann kannst du die SSH-con trennen und der service läuft weiter ...

willst du nachträglich was dran machen einfach wieder connecten ... "screen -r" eingeben um wieder an die session anzudocken ... und dann z.b. mit "STRG + C" den prozess killen ...

"nohup" (ist btw das gleiche wie "&" ans ende) ist nicht so super da man nachträglich nicht mehr ran kommt und sich die prozess-id merken muss um "kill" machen zu können ...
 
"nohup" (ist btw das gleiche wie "&" ans ende) ist nicht so super da man nachträglich nicht mehr ran kommt und sich die prozess-id merken muss um "kill" machen zu können ...
Nein. & startet den Prozess im Hintergrund. Nohup sorgt dafür, dass der Prozess weiter läuft wenn man sich mit dem forkenden Prozess ausloggt.
Nein. Die Prozess-ID kann man auch ermitteln, z.B. mit ps .
 

Neue Themen


Zurück
Oben