1つのコマンドを使用して、それぞれが異なるコマンドを実行する4つのウィンドウを持つGNUセッションを作成するにはどうすればよいですか?

MarioPL98

起動するたびに画面をバックグラウンドで起動させようとしています。少なくとも4つのウィンドウが必要で、それぞれが異なるコマンドを自動的に実行します。どうやってやるの?

ゲイブ

まず、切り離された画面セッションを開始します。次に、その名前を使用してそのセッションにコマンドを送信します。セッションがすでに実行されているかどうか、および/またはセッション内で何が起こっているかを把握する良い方法はないことに注意してください。このスクリプトがすでに実行されているときに再起動しないようにするのはあなた次第です(これを行う方法はたくさんありますが、この質問の範囲外です)。

コマンドラインをスクリプトに入れることをお勧めします。そうしないと、レベルを引用するのに時間がかかる可能性があります。これを実行したとすると、ランチャースクリプトは次のようになります。

#!/bin/bash

# An arbitrary name to uniquely identify this screen session:
SESSION="my_session_name_here"

# Create the detached session, running the first command in its first window:
screen -S "${SESSION}" -d -m script1.sh

# Now add the other windows. You create new windows within screen with
# "C-a:screen" (usually mapped to some other shortcut), so that's the command: 

screen -S "${SESSION}" -X screen script2.sh
screen -S "${SESSION}" -X screen script3.sh

# You could have given the windows different titles by adding "-t title1" etc.

いつでもセッションを添付して、インタラクティブに起動したかのように、セッションの動作を確認できます。ただし、各ウィンドウのコマンドは、それぞれのスクリプトを起動したシェルではないため、スクリプトからControl-Cを押すとすぐに、ウィンドウが閉じます。これを回避したい場合は、画面セッションが手動で操作しているかのように動作することを覚えておいてください。次のようにします。

screen -S my_session -d -m
# "active" window is now 0 (the only one)
screen -S my_session -X exec script1.sh
screen -S my_session -X screen
# "active" window is now 1, running the shell
screen -S my_session -X exec script2.sh
# ... etc.

しかし、それはややもろいです。あなたはこれを使用しない場合、あなたは間違いなく、彼らは自明短い方にも、唯一のリスト画面リモートコマンド、および他のスクリプト内のすべての実際の仕事を持っていることは本当に些細なラッパースクリプトを持っていると思います。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ