Wie übernehme ich die Kontrolle über einen separaten Prozess in der Linux-Shell?

2

Ich habe gerade einen Minecraft-Server auf meinem VPS für meinen Bruder eingerichtet und habe ihn mit einem Bash-Skript ausgeführt:
sh ./server.sh&

Auf diese Weise läuft der Server und ich kann immer noch mit Putty auf derselben Kommandozeile arbeiten. Aber was ist, wenn ich Befehle in den Minecraft-Server eingeben möchte? Wie bekomme ich das auf dem Konsolenbildschirm zurück:
[10:17:23] [Server thread/INFO]: Starting minecraft server version 1.7.10 [10:17:23] [Server thread/INFO]: Loading properties [10:17:23] [Server thread/INFO]: Default game type: SURVIVAL [10:17:23] [Server thread/INFO]: Generating keypair [10:17:24] [Server thread/INFO]: Starting Minecraft server on *:25565 [10:17:24] [Server thread/INFO]: Preparing level "world" [10:17:24] [Server thread/INFO]: Preparing start region for level 0 [10:17:25] [Server thread/INFO]: Preparing spawn area: 52% [10:17:26] [Server thread/INFO]: Preparing spawn area: 99% [10:17:26] [Server thread/INFO]: Done (2.132s)! For help, type "help" or "?" <input line>

qreon
quelle

Antworten:

6

Ich würde mit Screen gehen . Die Installation kann über apt-get erfolgen. Danach geben Sie einfach screendie Eingabeaufforderung ein, starten einen Prozess (auch ohne ihn in den Hintergrund zu senden), schließen die Sitzung und der Prozess läuft weiter. Um die Bildschirmsitzung erneut aufzurufen, kehren Sie einfach in den Computer zurück und geben ein screen -r. Sie können den aktiven Bildschirm auch verlassen, indem Sie CTRL+Agefolgt von drücken CTRL+D.

Daniel
quelle
Ich denke, das ist eine bessere und allgemeinere Lösung. Sie können sogar einen Resume-Befehl in Ihr .bash_profile einfügen. Ich habe: if $ (screen -ls | grep -q pts); dann screen -x; sonst screen -R; fi
agtoever
6

Wie bekomme ich einen Hintergrundjob in den Vordergrund?

Verwenden Sie fg.

fg

Job in den Vordergrund schicken

Syntax

fg [PID ...]

Optionen :

Wenn PID angegeben ist, wird der Job mit der angegebenen Gruppen-ID in den Vordergrund gestellt.

Senden Sie den angegebenen Job in den Vordergrund. Während ein Vordergrundjob ausgeführt wird, wird der Fisch angehalten. Wenn kein Job angegeben ist, wird der zuletzt verwendete Job in den Vordergrund gestellt.

Die PID des gewünschten Prozesses wird normalerweise mithilfe der Prozesserweiterung ermittelt.

Beispiel

Stellen Sie den Job mit Job-ID 0 in den Vordergrund:

fg% 0

Quelle fg Job in den Vordergrund schicken

DavidPostill
quelle
Danke Kumpel, aber jetzt habe ich ein anderes Problem. Wenn ich den Serverprozess im Hintergrund mit Strg + Z nehme, wird eine Warnung aus der Shell angezeigt: [1]+ Stopped sh /.../mineserv.sh Wenn ich ihn dann wieder in den Vordergrund bringe fg, warnt mich der Server, dass er xxxx ms dahinter ausgeführt wird, wobei xxxx die Dauer ist, für die er ausgeführt wird wurde im Hintergrund ausgeführt. Wie kann ich sicherstellen, dass Prozesse beim Senden in den Hintergrund nicht gestoppt werden?
Qreon
1
@qreon - Wenn Sie bgunmittelbar danach eingeben Ctrl-z, wird es im Hintergrund ausgeführt.
AFH
3
Wenn fg; bgSie die Tastenkombination Strg + Z nicht mehr auf dem Server verwenden, wird das bgProgramm automatisch ausgeführt.
Kroltan