画面セッションを開始する方法と、人の介入なしに接続された画面セッションでコマンドを実行する方法はわかりません。予想される動作は次のとおりです。
[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"
。対話型スクリプトの実行に使用されるので、セッションを開いたままにしたいと思います。
答え1
GNUは、screen
さまざまなオプションとスクリーンセッション内で実行されるオプションのコマンドを使用します。コマンドが提供されない場合、screen
セッションには対話型シェルセッションが含まれます。screen
コマンドラインで指定されたコマンドであっても実行されたシェルであっても、実行中であったコマンドが終了するscreen
と、セッションは終了します。
2つの質問があります。
- 複数のコマンドを実行したい。
- セッションは最終的に終了せず、インタラクティブシェルセッションに残りたいです
screen
。
screen
最初の問題を解決するには、開始コマンドを次のように設定します。
sh -c 'hostname; echo yes; echo no'
これはインラインスクリプトを起動する単一のコマンドですsh -c
。このスクリプトはコマンドを実行します。実行中のスクリプトに必要な場合(例ではありません)、代わりに使用できますbash -c
。sh -c
bash
2番目の問題を解決するには、スクリプトが実行するコマンドのリストの最後のステップとしてインタラクティブシェルを起動することを検討してくださいsh -c
。
sh -c 'hostname; echo yes; echo no; exec bash -i'
exec bash -i
対話型シェルセッションを開始しますbash
(これexec
を行うと、変えるシェルsh -c
)。
セッションで次のコマンドを実行しますscreen
。
screen sh -c 'hostname; echo yes; echo no; exec bash -i'
シェルセッションが終了すると、GNUはscreen
終了しますbash -i
。