スクリーンセッションの複数のプロセスにわたって自動的にコマンドを貼り付ける

スクリーンセッションの複数のプロセスにわたって自動的にコマンドを貼り付ける

bashで書かれたいくつかのコマンドセットがテキストファイルに含まれていて区切られており、\n\n各コマンドを指定された画面プロセスに自動的に貼り付けたいと思います。わかりやすくするために、私の項目には次のものcommand.txtしか含まれていないとします。

#first bunch of commands:    
executable_script1.sh
mv executable_script1 directory1


#second bunch of commands:    
executable_script2.sh
mv executable_script2 directory2

したがって、最初の命令セットはexecutable_script1.sh移動後に実行されますexecutable_script1。この例では、私の画面には3つのプロセスが含まれています。

0$ htop
1$ bash
2$ bash

プロセスの名前は重要ではありません。唯一重要な情報は、Nプロセスに画面コマンドが必要であることですN$。なぜなら0$常にだからですhtop

今では、各コマンドセットを対応する画面プロセスに手動でコピー/貼り付けてきましたが、確かに動作しているようです。しかし、今では40以上のコマンドセットとできるだけ多くの画面プロセスを処理します。それでは、N画面端末にコマンドを自動的に貼り付ける方法は何ですか?私は/スクリプトがこの問題を解決するとN$思いますが、私はそれに精通していません。必要に応じて複数のコマンドを含むファイルを作成できます。bashshelltxt

この問題を解決するのに役立ちますか?欠落している情報があれば、いつでもお問い合わせください。

答え1

ついに答えを見つけました。この投稿スタックエクスチェンジで!時々、いくつかの異なるキーワードだけで解決策を見つけることができるので、他の人がここに来る場合に備えて答えます。

要するに

次のコマンドを使用して、コマンドを画面に自動的に貼り付けますbash

screen -x screen_name -p 1 -S stuff 'executable_script1.sh\n'

画面処理を意味-p 1します1$\nコマンドラインを貼り付けたら、Enterキーを押すのと同じようにコマンドの最後を入力する必要があります。

詳細ステップ

1)screen作業するセッションを作成します(ここでは「screen_name」と呼びます)。

screen -S screen_name

すべてのコマンドに十分なプロセスを提供してください(例では、0$ htop2つのプロセス:1$2$)。.screenrc画面セッションがデフォルトで指定された数のプロセスで開始されるように、ホームディレクトリで編集できます。この例では、私のエントリには次のものが.screenrc含まれます。

screen -t htop
screen -t 
screen -t 

2) さまざまな画面プロセスで実行する各コマンドセットに対して bash ファイルを作成します。

これには、以下を含む2つのファイルがありますscreen1

#!/bin/bash

screen -x screen_name -p 1 -X stuff 'executable_script1.sh\n'
screen -x screen_name -p 1 -X stuff 'mv executable_script1 directory1\n'

以下screen2を含みます。

#!/bin/bash

screen -x screen_name -p 2 -X stuff 'executable_script2.sh\n'
screen -x screen_name -p 2 -X stuff 'mv executable_script2 directory1\n'

3)すべてのコマンドを端末に一度に貼り付けます。

bash /path_to_screen1/screen1 & /path_to_screen1/screen2 &

長い計算を実行していてもコマンドを貼り付けるだけで、この端末をすぐに閉じることができますscreen。手動でscreenセッションを開き、これらの行が実行されていることを確認してください。

言うまでもなく、多くの画面プロセスに渡すコマンドが多い場合は、bashファイルを作成し、スクリプト(例えば)を介してコマンド(ステップ2と3)を貼り付けることができますpython。必要に応じて、executable_script1.sh通常の端末と同様に通話を含めることができます。pythonpython python_script.py

これが他の人に役立つことを願っています!

関連情報