# ServerSocket beendet mit PuTTy



## RawBit (22. Okt 2012)

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


----------



## trööööööt (22. Okt 2012)

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


----------



## RawBit (22. Okt 2012)

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


----------



## Lumaraf (22. Okt 2012)

BigH hat gesagt.:


> 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.


----------



## RawBit (23. Okt 2012)

Dachte mir schon, daß es nicht an PuTTy liegt ^^ Aber genau das hab ich gesucht ! Danke


----------



## RawBit (23. Okt 2012)

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


----------



## javabar (23. Okt 2012)

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


----------



## FArt (25. Okt 2012)

BigH hat gesagt.:


> 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, ...


----------



## trööööööt (26. Okt 2012)

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 ...


----------



## FArt (26. Okt 2012)

trööööööt hat gesagt.:


> "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 .


----------

