Linux

如何在不停止多個互動作業的情況下使用一個終端?

  • April 14, 2020

我有兩個 shell 腳本,比如說client.shand server.sh,它們必須同時工作並以 - 方式提供一些有用的輸出watch

而且我只能使用一個終端。所以我應該在它們之間切換以查看發生了什麼,但不要停止它們(Ctrl+ Z)。

我不知道該怎麼做。

當我跑

./server.sh &

然後輸入Enter終端(在啟動client.sh之前),但它顯示

[1]+ Stopped                   ./server.sh

是否有一種方便的方法可以在終端中的作業之間切換以查看它們的輸出(內部狀態)而不停止它們?

使用screen

$ screen -S my-job

這將啟動一個screen名為“my-job”的新會話並連接到它。

$ ./server.sh

這將server.sh在附加到screen會話的第一個(預設)終端上啟動您的腳本。現在按Ctrl-A然後按Ctrl- C。這將創建一個新終端並切換到它。現在你可以執行:

$ ./client.sh

並觀察其輸出。要來回切換,請按Ctrl-A再按Ctrl- A

要在程序仍在執行的同時斷開連接screen,請按Ctrl- ,A然後按dD etach。要重新連接並再次查看輸出,請使用:

$ screen -x my-job

您還可以通過執行以下操作同時查看兩個腳本的輸出:

  • Ctrl-A後按sS分割您的視圖。
  • Ctrl-A然後Tab向下移動到下分割
  • Ctrl-A隨後"打開活動終端列表,並選擇第 1 個終端(第 0 個預設連接到頂部拆分)。

引用自:https://unix.stackexchange.com/questions/579825