bash screen をバックグラウンドでセットアップし、後で前面に表示するにはどうすればよいですか?

bash screen をバックグラウンドでセットアップし、後で前面に表示するにはどうすればよいですか?

これは質問に対するより深い説明です。

私の目標は:

  1. 環境変数のセットが設定された bash シェルを起動し、バックグラウンドで実行します。

  2. 約5分で打ち上げ画面bash シェルのコマンドはそれぞれ独自のコマンドを実行しますが、bash シェルで設定された環境変数を使用します。コマンドはscreenすべて bash ウィンドウ内に配置され、できればタイル状に表示されます。

  3. 後で、すべてのコマンドを表示した状態で bash シェルを呼び出しますscreen

  4. 完了したら、bash シェルと関連を閉じますscreen

答え1

さて、あなたの質問についてしばらく考えた結果、いくつかの観察結果があります。

2行目:コマンドはすべてbashウィンドウ内に並べ、できれば並べて表示します。分離した場合のように不可能である、窓がない

再度接続すると、常に1つだけ表示されます疑似端末

しかし、要求されたことをほぼ実行するには、次の操作を試してください。

cat >screenRcTestまず、次のように入力して RCfile を作成します。

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

まだ存在しない場合は、バックグラウンドで新しいスクリーン セッションが実行されます。

建物用タイル張りプレゼンテーション用に別のシェルスクリプトを用意する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。 を使って、MyVariablebashが の子であることを保証できます。スクリーンRcテスト画面( for constancescreenSplitTestの隠しファイルに移動した後$HOME/.screenSplitTest):

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

答え2

私の知る限り、画面インスタンスをタイル表示することはできませんが、tmux インスタンスをタイル表示することはできます。共有環境設定用の rc ファイルを作成し、 . を使用してこれを 5 つの bash シェルのそれぞれにロードすることができますbash --rcfile <your file here>

bash シェルは tmux を起動することによって開始され、内部では、各 bash インスタンスに対して新しい分割を作成するためのコマンド (たとえば、標準設定を使用して垂直分割する場合は Ctrl+b %) を実行します。

関連情報