2009-05-25 7 views
1

Ich fühle mich etwas dumm, das zu fragen, aber ich bin relativ neu in Linux (mehr in Bezug auf Erfahrung als Zeit), und eine Sache, die ich immer gefragt habe, ist, wenn ich (mein eigener Begriff) einen Prozess "wiedervereinigen" kann während es läuft.Linux - Kommunikation mit einem Prozess? Prozeß in Aktion wieder aufnehmen?

Zum Beispiel, wenn ich einen Spielserver oder einen eggdrop IRC-Bot im Hintergrund laufen lasse, gibt es einen Befehl, den ich verwenden kann, um diesen Prozess in Aktion zu sehen und alle Ausgaben der Konsole anzuzeigen?

Ich spreche nicht über nur den Prozess mit dem Befehl "top" anzuzeigen, aber tatsächlich zu verknüpfen, als ob ich es gerade von der Befehlszeile ausgeführt.

Danke.

Antwort

5

Debuggers kann „anhängen“, um laufende Prozesse, aber sie könnte besser sein, Ihr Programm in screen läuft (die Sie lösen und wieder anbringen zu Terminal in einer ziemlich natürliche Weise lässt).


Es könnte einige gute Sachen gute Sachen in sein:

+0

Lucky me, Bildschirm ist von meinem Provider deaktiviert :) – scrot

+0

+1 für den Bildschirm. Mit dem Bildschirm können Sie in derselben Sitzung an denselben Begriff/mehrere Sätze von Begriffen anfügen. – JensenDied

2

Können Sie das konkretisieren? Sprechen Sie nur darüber, einen Prozess in der aktuellen Sitzung zu Hintergrund zu machen und ihn dann wieder in den Vordergrund zu stellen.

Z. B .:

doLongTask & 

# Later 

fg %3 

3 in diesem Beispiel ist die Auftragsnummer dieser Instanz von doLongTask. Sie können alle laufenden Jobs mit sehen:

Aber beachten Sie, dies wird immer noch nur sehen, was an der Konsole ausgegeben wird. I.E. stdout und stderr, ohne Umleitungen.

2

Die einfache Antwort ist:

>> ./runmyserver 
<press ctrl-z> 
>> bg 
>> ...do something else ... 
>> fg 

Sie können auch im Hintergrund beginnen mit:

>> ./runmyserver & 

Für kompliziertere Sachen wie den Server von der Konsole-Sitzung trennen (so es läuft nach wie vor, wenn Sie loggen sich aus) Sie wollen wirklich Bildschirm. Vielleicht bitte sie darum, es ist nicht wirklich ein Sicherheitsrisiko und es ist ein nützliches Programm, um zu haben.

Beachten Sie auch, dass ctrl-z Ihren Server tatsächlich bis bg pausiert, also wenn Leute spielen, könnte es einen Schlag überspringen, am besten, es schnell zu tun.

Schließlich haben viele Spiel-Server eine Remote-Anmeldung für diese Art von Sache, die viele dieser Probleme lösen würde. Stelle sicher, dass dein Spiel und dein Host dies nicht unterstützen, bevor du nach Alternativen suchst.

EDIT: Lesen Sie Ihre Frage erneut. Es hört sich so an, als könnte man die Ausgabe zumindest erreichen, indem man eine Datei umleitet.Dies wird nicht lassen Sie aber mehr Input hinzufügen:

./runmyserver > log.txt 
0

Wenn Sie im Voraus wissen, dass Sie dies tun wollen, verwenden Bildschirm (1) und dem Server in den Vordergrund in einem Bildschirm-Sitzung ausgeführt. Sie können sich von Ihrer Bildschirmsitzung lösen und den Prozess weiterlaufen lassen. Sie können dann später Ihre Bildschirmsitzung erneut anhängen und alle Ausgaben anzeigen, die seither erstellt wurden, bis zur Größe des Scrollback-Puffers.

Verwandte Themen