我有兩個 shell 腳本,比如說client.sh
和server.sh
,它們必須同時工作並以watch
-way 的方式提供一些有用的輸出。
而且我只能使用一台終端。所以我應該在它們之間切換以查看發生了什麼,但不要停止它們(Ctrl+ Z)。
我不知道該怎麼做。
當我跑步時
./server.sh &
然後輸入Enter終端機(在啟動之前)客戶端.sh),但它顯示
[1]+ Stopped ./server.sh
是否有一種方便的方法可以在終端機中的作業之間切換以查看其輸出(內部狀態)而不停止它們?
答案1
使用screen
:
$ screen -S my-job
這將啟動一個screen
名為“my-job”的新會話並連接到它。
$ ./server.sh
server.sh
這將在連接到會話的第一個(預設)終端上啟動您的腳本screen
。現在按Ctrl-A然後按Ctrl- C。這會C建立一個新終端並切換到它。現在你可以運行:
$ ./client.sh
並觀察其輸出。若要來回切換,請按Ctrl-,A然後再按Ctrl- A。
若要在screen
程式仍運行的情況下斷開連接,請按Ctrl-A然後d按D蝕刻。若要重新連接並再次查看輸出,請使用:
$ screen -x my-job
您也可以透過執行以下操作同時查看附加腳本的輸出:
- 按Ctrl-A然後按s到S分裂你的觀點。
- 按Ctrl-A然後按 向下Tab移動到下分割線
- Ctrl-A隨後"開啟活動終端列表,然後選擇第 1 個終端(第 0 個終端預設連接到頂部分割)。
答案2
您正在尋找的是 Bash 的作業控制。您可以透過man bash
搜尋「JOB CONTROL」(/^JOB CONTROL
在 bash 手冊頁中輸入) 來閱讀所有相關內容。
儘管如此,command &
該命令仍應在後台運行。您可以使用jobs
bash 命令驗證這一點。這將列出所有後台作業、作業編號和狀態。
使用bg n
或%n &
可以恢復作業編號為 n 的已停止作業(例如 bg 5 恢復作業編號 5)。
使用fg n
or%n
可以讓工作從後台回到前台。
希望這可以幫助。
答案3
使用 screen(1) 或 tmux(1) 之類的東西可以同時運行多個終端。您甚至可以註銷並從其他地方重新獲取它們。
在 Gnome 終端機等使用選項卡。
在 bash(1) 中使用作業控制(確保閱讀資訊檔案的相關部分)來停止/後台/前台作業。