web-dev-qa-db-ja.com

スクリプトでUNIXの「画面」を作成および操作できますか?

Ubuntuラップトップに、3つの異なる画面を使用したい作業環境があります。

例えば。ターミナルでは、私は通常書く

screen -S mywork
run_server_1

次に、ctrl-acを使用して2番目の画面を作成します

run_server_2

等.

この環境のセットアップを自動化するスクリプトを作成したいのですが、1つのスクリプトから複数の画面を制御するにはどうすればよいですか?

更新:画面構成ではなく、シェルスクリプトからこれを実行できるようにしたいのです。ファイル。それを行う方法はありますか?

6
interstar

manページ および チュートリアル を読むと役立ちます

私はあなたがしたいのはファイル$ HOME /.screenrc.multiwinを作成することだと思います

# read in your normal screenrc
# before anything else
source $HOME/.screenrc
# now start opening windows
# it's possible to set the window title with
# the -t option
# you can also specify the window number
# to launch in
screen -t server1 5 run_server_1
screen -t server2 6 run_server_2

次に実行します

screen -c $HOME/.screenrc.multiwin

あなたが必要なことをします

5
Unreason

コマンドは、screen -S sessionname -X commandを使用して外部から渡すことができます。たとえば、screen -S mywork -X screen run_server_2は新しいウィンドウ(ctrl-a cと同じ)を作成しますが、そのウィンドウではrun_server_2が実行されます。手作業で行うのとは異なり、そのウィンドウで実行されているシェルはないため、run_server_2が終了すると、ウィンドウは閉じられます。

複数の画面を制御するには、すべての画面に-Sという名前が付けられていることを確認するだけです。

2
DerfK

tmuxは、このタイプの目的のために画面よりもはるかに簡単にスクリプト化できると思います。 tmuxプログラムは、コマンドラインの引数として独自のコマンドを受け入れるため、たとえば、「tmux new-session -d '/ bin/bash' \; new-window -d'top '」という2つのウィンドウを起動します。最初のウィンドウでは、インタラクティブな「bash」シェルが実行され、2番目のウィンドウでは「top」が実行されます。

1