如何在背景設定 bash 螢幕並稍後將其帶到前台?

如何在背景設定 bash 螢幕並稍後將其帶到前台?

這是對這個問題的更深入的解釋。

我的目標是:

  1. 啟動配置了一組環境變數但在背景執行的 bash shell。

  2. 推出約五螢幕bash shell 中的命令,每個命令執行自己的命令,但使用 bash shell 中設定的環境變數。指令screen應該全部排列在 bash 視窗中,最好是平舖的。

  3. 稍後呼叫 bash shell,screen顯示所有指令。

  4. screen完成後關閉 bash shell 和關聯的 shell 。

答案1

好吧,經過一段時間的研究你的問題,有一些觀察:

第 2 行:指令應該全部排列在 bash 視窗中,最好是平舖的是不可能的,因為當分離時,沒有窗戶

因此,當您重新連接時,您將始終只看到一個偽tty

但要大致完成要求的操作,請嘗試以下操作:

首先建立一個 RC 文件,輸入:cat >screenRcTest其中包含以下內容:

setenv MyVariable Test
screen -t Top top
screen -t VMStat vmstat -n 1
screen -t OpenPorts watch -n 2 'netstat -tan | grep LISTEN'
screen -t IF-Configs watch -n2 'ip -s link show | grep -v "^ *[RT]X: bytes"'
screen -t "Bourne Again Shell" /bin/bash -i

然後準備一張run包裝紙:

screen -ls | grep -q screenTest || screen -dmS screenTest -c ./screenRcTest

這將在背景運行一個新的螢幕會話(如果尚不存在)。

用於建築平鋪的演示文稿,準備另一個 shell 腳本作為cat >screenSplitTest

#!/bin/bash

while read line ;do
    screen -X $line
done <<eof
split
split
resize 20
split -v
resize 82
select 0
focus
select 1
focus
split -v
select 2
focus
select 3
focus
select 4
eof

並且不要忘記chmod +x screenSplitTest

最後運行顯示命令作為:

xterm -fn 9x15 -geom 160x60 -exec screen -DrS screenTest 

這將打開一個新窗口,其中只有一個bash準備就緒。

在這個bash,簡單地點擊:

./screenSplitTest

這將分割您的窗口,讓您在 bash 會話中再次做好準備。

結果截圖

現在輸入:

echo $MyVariable
Test

因此,您將看到環境變數如何傳遞給子 bash。

編輯補充:

完成所有操作後,您可以在您的重擊:

trap '[ $(tput lines) == 60 ] && [ $(tput cols) == 160 ] && ./screenSplitTest' WINCH

因此,您可以透過鍵入以下內容來斷開連線:Ctrl-A d下次您使用xterm相同的參數和幾何圖形執行時,腳本 screenSplitTest 將自動啟動。

編輯2

現在,您甚至可以將其安裝trap在您的 中.bashrc,用於MyVariable確保 bash 是螢幕測試畫面(在移動screenSplitTest到康斯坦斯的隱藏檔案後$HOME/.screenSplitTest):

[ "$TERM.$MyVariable" == "screen.Test" ] && \
    trap '[ $(tput lines) == 60 ] && [ $(tput cols) == 160 ] && $HOME/.screenSplitTest' WINCH

答案2

據我所知,您不能平鋪螢幕實例,但可以平鋪 tmux 實例。您可以做的是為共享環境設定建立一個 rc 文件,然後使用bash --rcfile <your file here>.

bash shell 將透過啟動 tmux 來啟動,並在內部執行一些指令來為每個 bash 實例建立一個新的分割(例如 Ctrl+b % 用於垂直分割,使用標準設定)。

相關內容