分割画面でバックグラウンド タスクをプログラムで実行しますか?

分割画面でバックグラウンド タスクをプログラムで実行しますか?

バックグラウンドで実行するサブコマンドを受け入れ、各サブコマンドごとに分割画面を作成するというコマンドを作成する方法を見つけようとしていますrunbg。サブコマンドが正常に完了すると、分割画面は閉じられます。サブコマンドが失敗した場合は、ユーザーが終了信号で画面を閉じるまで、画面はエラーとともに開いたままになります。すべての画面が閉じられると、コマンドは完了し、実行が続行されます。例:

runbg "ping -t 5 google.com" "ping -t 10 microsoft.com"
echo "done"

私は次のことができることを発見しました:

ping -t 5 google.com &
ping -t 10 microsoft.com &
wait

これにより並列処理が実現されますが、各コマンドはすべてを同じ端末に出力するので、ノイズが多くなります。そのため、分割画面の設定が必要になります。

ここで検索してみると、GNUスクリーンこれは画面側の処理を処理できるようですが、.screenrc ファイルが必要なようです。これはプログラムで実行することは可能ですが、どこかにランダムな tmp ファイルを書き込む必要があると思われるため、少し面倒です。

私は見つけたこの答え画面を使用せずに使用する場合、.sreenrc分割画面の操作方法がわかりません。

つまり、要約すると:

  • 私が目指している機能をすでに実現しているものはありますかrunbg?
  • そうでない場合、GNU Screen はこれに必要なのでしょうか? ファイルを使用する必要がありますか.screenrc、それともファイルなしで分割画面を実現する方法がありますか?

答え1

次のように、split-window と send-keys を連結することで、tmux でこれを実行できます。

tmux new session \; split-window -v \; send-keys 'ping -t 5 google.com' C-m \; split-window -h \; send-keys 'ping -t 10 microsoft.com' C-m \;

関連情報