Gnu-Screen

執行螢幕並立即執行其他命令

  • December 2, 2020

我無法弄清楚如何啟動螢幕會話,並在附加的螢幕會話中執行命令而無需人工干預。預期的行為是:

[me@me ~]# screen -S name -L --mystery_flag 'hostname;echo yes;echo no'
#new screen session
[me@me ~]# hostname
me
[me@me ~]# echo yes
yes
[me@me ~]# echo no
no
[me@me ~]#

我只找到了向分離的螢幕會話發送命令的方法,或者在螢幕會話發送類似screen -S name "command". 我希望會話保持打開狀態,因為它將用於執行互動式腳本。

GNUscreen有許多選項,然後是一個可選命令在螢幕會話中啟動。如果沒有給出命令,screen會話將包含一個互動式 shell 會話。會話在它執行的screen命令終止時終止,無論它是在命令行上給出的命令screen,還是它執行的 shell。

你有兩個問題:

  1. 您想執行多個命令。
  2. 您希望會話不會在最後終止,而是將您留在互動式 shell 會話中,在screen.

要解決第一個問題,請將screen啟動的命令設為

sh -c 'hostname; echo yes; echo no'

這是啟動內聯sh -c腳本的單個命令。此腳本執行您的命令。如果您正在執行的腳本需要(您的範例不需要) ,您可能希望使用bash -c它來代替。sh -c``bash

sh -c要解決第二個問題,請考慮在腳本執行的命令列表的最後一步啟動互動式 shell :

sh -c 'hostname; echo yes; echo no; exec bash -i'

啟動exec bash -i互動式bashshell 會話(使其exec替換shellsh -c)。

screen會話中執行它:

screen sh -c 'hostname; echo yes; echo no; exec bash -i'

screen一旦bash -ishell 會話終止, GNU就會終止。

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