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


21

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

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

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

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

回答:


15

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

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

デッドセッションはで殺すことができますscreen -wipe


これで仕事は完了です!
ヒューズ

1
このコマンドは、コマンドごとに新しいスクリーンセッションを作成します。各コマンドに対して1つのウィンドウを含む単一の画面セッションを作成するために使用することはできません(質問の手動ステップが行うように)。したがって、質問には回答せず、.screenrc代わりに以下の回答が受け入れられるはずです。
テイ

バックグラウンドで何かを安く実行したいだけなら、マルチウィンドウ1セッションに本当の利点はありますか?
ローレンス

29

複数のセッションを自動的に開始するには.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セッションのタイトルを設定します。行の残りは実行するコマンドとそのパラメーターです。

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

複数の.screenrcファイルが必要な場合は、任意の名前を付けて、で選択しscreen -c myscreenrcます。


5

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

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

S:画面を作成するには

d:画面からデタッチします

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


3
興味深いことに、screen -dmS s1etcの代わりにこのように書くことができます。オプションをグループ化するとき、引数を持つものが最後でなくてもよいことを知りませんでした。
トマスガンドール
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.