Gnu-Screen
執行螢幕並立即執行其他命令
我無法弄清楚如何啟動螢幕會話,並在附加的螢幕會話中執行命令而無需人工干預。預期的行為是:
[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"
. 我希望會話保持打開狀態,因為它將用於執行互動式腳本。
GNU
screen
有許多選項,然後是一個可選命令在螢幕會話中啟動。如果沒有給出命令,screen
會話將包含一個互動式 shell 會話。會話在它執行的screen
命令終止時終止,無論它是在命令行上給出的命令screen
,還是它執行的 shell。你有兩個問題:
- 您想執行多個命令。
- 您希望會話不會在最後終止,而是將您留在互動式 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
互動式bash
shell 會話(使其exec
替換shellsh -c
)。在
screen
會話中執行它:screen sh -c 'hostname; echo yes; echo no; exec bash -i'
screen
一旦bash -i
shell 會話終止, GNU就會終止。