如何自動啟動多個螢幕會話?

如何自動啟動多個螢幕會話?

我正在嘗試建立一個命令來啟動screen、建立四個具有不同名稱的會話,並運行四個不同的命令。

我知道如何手動執行此操作:

1. screen
2. ./command1 args
3. CTRL-A :sessionname Session 1
4. CTRL-A C
5. (GOTO 2)

我可以用 bash 腳本之類的東西來做到這一點嗎?我該怎麼做呢?

答案1

screen -dmS "$SESSION_NAME" "$COMMAND" "$ARGUMENTS"$COMMAND將產生一個在背景運行的螢幕。

您可以透過 來查看活動會話screen -ls並透過 重新連線screen -r "$SESSION_NAME"

死會話可以透過 終止screen -wipe

答案2

若要自動啟動多個會話,請設定一個.screenrc文件,即螢幕的設定檔。在其中,您可以建立會話、啟動程式、更改工作目錄等。

.screenrc 檔案的簡單範例:

# don't display the copyright page
startup_message off

# increase scrollback buffer size
defscrollback 10000

# create windows
screen -t TODO vim TODO.txt
chdir src
screen -t coding vim main.c
screen -t run 

上面的命令screen分別建立一個螢幕會話。-t設定會話的標題;該行的其餘部分是要運行的命令及其參數。

因此,第一行和第二screen行啟動一個會話並vim在內部啟動。第三個只是開始一個會話並在出現提示時讓您下線。chdir變更所有後續會話的工作目錄。

如果您想要多個.screenrc文件,只需按照您想要的方式命名它們,然後選擇一個帶有screen -c myscreenrc.

答案3

您可以一起使用 d、m、S 選項:

screen -Sdm s1
screen -Sdm s2
screen -Sdm s3

S:創建螢幕

d :從螢幕分離

m :強制建立螢幕,不論螢幕是否從另一個畫面內呼叫。

答案4

我有很多情況需要打開一組主機進行調查或支援。因為我只是偶爾需要這些額外的窗口,所以我決定使用 shell 腳本而不是.screenrc方法。

例如在 ~/bin/prod_support 中:

#!/bin/bash

if [[ ! -z "$STY" ]]; then
        screen -t "hosta" ssh hosta
        screen -t "hostb" ssh hostb
else
        echo "start up screen first"
fi

如果從一個運行非螢幕shell 我收到提醒...如果從內部螢幕運行,它將為每個腳本運行添加標題視窗。

相關內容