web-dev-qa-db-ja.com

複数のスクリーンセッションを自動的に開始するにはどうすればよいですか?

screenを起動し、異なる名前で4つのセッションを作成し、4つの異なるコマンドを実行するコマンドを作成しようとしています。

私はこれを手動で行う方法を知っています:

1. screen
2. ./command1 args
3. CTRL-A :sessionname Session 1
4. CTRL-A C
5. (GOTO 2)

これをbashスクリプトなどで実行できますか?どうすればいいですか?

22
hughes

screen -dmS "$SESSION_NAME" "$COMMAND" "$ARGUMENTS"は、バックグラウンドで$COMMANDを実行している画面を生成します。

screen -lsでアクティブなセッションを確認し、screen -r "$SESSION_NAME"で再接続できます。

デッドセッションはscreen -wipeで強制終了できます。

16
LawrenceC

複数のセッションを自動的に開始するには、.screenrcファイル、画面の構成ファイル。その中で、セッションの作成、プログラムの開始、作業ディレクトリの変更などを行うことができます。これを使用して、スクリーンセッションを初期化します。

.screenrcファイルの簡単な例:

# don't display the copyright page
startup_message off

# increase scrollback buffer size
defscrollback 10000

# create windows
screen -t TODO vim TODO.txt
chdir src
screen -t coding vim main.c
screen -t run 

上記のscreenコマンドは、それぞれ1つのスクリーンセッションを作成します。 -tセッションのタイトルを設定します。行の残りの部分は、実行するコマンドとそのパラメーターです。

したがって、最初と2番目のscreen行はセッションを開始し、内部でvimを起動します。 3つ目はセッションを開始し、プロンプトでドロップします。 chdirは、後続のすべてのセッションの作業ディレクトリを変更します。

複数の.screenrcファイル、好きな名前を付けて、screen -c myscreenrc

30
sleske

D、m、Sオプションを一緒に使用できます。

screen -Sdm s1
screen -Sdm s2
screen -Sdm s3

S:画面を作成するには

d:画面から切り離す

m:画面が別の画面内から呼び出されたかどうかに関係なく、画面の作成を強制します。

5
aliasav