Wie kann ich ein Terminal mit mehreren interaktiven Jobs verwenden, ohne sie zu stoppen?

Wie kann ich ein Terminal mit mehreren interaktiven Jobs verwenden, ohne sie zu stoppen?

Ich habe zwei Shell-Skripte, sagen wir client.shund server.sh, die gleichzeitig laufen und eine brauchbare Ausgabe in watch-way liefern müssen.
Und ich kann nur ein Terminal verwenden. Ich sollte also zwischen ihnen wechseln, um zu sehen, was passiert, ohne sie jedoch anzuhalten ( Ctrl+ Z).
Ich weiß nicht, wie das geht.
Wenn ich ausführe

./server.sh &

dann geben Sie Enterim Terminal ein (vor dem Starten desclient.sh), aber es zeigt

[1]+ Stopped                   ./server.sh

Gibt es eine praktische Möglichkeit, im Terminal zwischen Jobs zu wechseln, um ihre Ausgabe (internen Status) anzuzeigen, ohne sie anzuhalten?

Antwort1

Verwenden screen:

$ screen -S my-job

Dadurch wird eine neue Sitzung mit dem Namen „my-job“ gestartet screenund eine Verbindung damit hergestellt.

$ ./server.sh

Dadurch wird Ihr server.shSkript auf dem ersten (Standard-)Terminal gestartet, das an die screenSitzung angeschlossen ist. Drücken Sie nun Ctrl- Agefolgt von Ctrl- C. Dadurch wirdCErstellen Sie ein neues Terminal und wechseln Sie dorthin. Jetzt können Sie Folgendes ausführen:

$ ./client.sh

und beobachten Sie die Ausgabe. Um hin- und herzuschalten, drücken Sie Ctrl- Aund dann erneut Ctrl- A.

Um die Verbindung zu trennen screenund Ihre Programme weiterhin laufen zu lassen, drücken Sie Ctrl- Aund anschließend daufDetach. Um die Verbindung wiederherzustellen und Ihre Ausgabe erneut anzuzeigen, verwenden Sie:

$ screen -x my-job

Sie können die Ausgabe beider Skripts auch gleichzeitig anzeigen, während sie angehängt sind. Gehen Sie dazu wie folgt vor:

  • Drücken Sie Ctrl- Aund anschließend szumSTeilen Sie Ihre Ansicht mit.
  • Drücken Sie Ctrl- Aund anschließend , Tabum zum unteren Split-Bildschirm zu gelangen.
  • Ctrl- Klicken Sie Aanschließend auf ", um eine Liste mit aktiven Terminals zu öffnen. Wählen Sie das 1. Terminal aus (das 0. ist standardmäßig mit dem oberen Split verbunden).

Antwort2

Was Sie suchen, ist die Jobsteuerung von Bash. Sie können alles darüber lesen, indem man bashSie nach „JOB CONTROL“ suchen (geben Sie es /^JOB CONTROLin die Manpage von Bash ein).

Trotzdem command &sollte der Befehl immer noch im Hintergrund laufen. Das können Sie mit dem jobsBefehl der Bash überprüfen. Dieser listet alle Hintergrundjobs mit Jobnummer und Status auf.

Mit bg noder %n &können Sie einen gestoppten Job mit der Jobnummer n fortsetzen (z. B. bg 5, um Job Nr. 5 fortzusetzen).

Mit fg noder %nkönnen Sie einen Job aus dem Hintergrund wieder in den Vordergrund holen.

Hoffe das hilft.

Antwort3

Verwenden Sie etwas wie screen(1) oder tmux(1), um das Äquivalent mehrerer Terminals gleichzeitig auszuführen. Sie können sich sogar abmelden und sie von woanders aus erneut aufrufen.

Verwenden Sie Tabs beispielsweise im Gnome Terminal.

Verwenden Sie die Jobsteuerung in bash(1) (lesen Sie unbedingt die relevanten Teile der Infodatei), um Jobs zu stoppen/in den Hintergrund/Vordergrund zu stellen.

verwandte Informationen