新しいバックグラウンドtmuxウィンドウでコマンドを実行し、プロセスが終了するのを待ちます

2_55am

スクリプトでtmuxを使用しようとしています。そのため、現在のスクリプト自体をブロックするまで、新しい非表示のペインで時間がかかるコマンド(たとえば、「ping -c 58.8.8.8」)を実行します。 pingは終了します。

「非表示のペイン」とは、バックグラウンドで送信される新しいペインでコマンドを実行することを意味します。コマンドを監視および/または操作するためにペインを切り替えることで引き続きアクセスできます(必ずしもpingする必要はありません)。
(編集を参照)

これが私がやろうとしていることをより明確に示すためのいくつかの疑似bashコードです:

echo "Waiting for ping to finish..."
echo "Ctrl-b + p to switch pane and see running process"

tmux new-window -d 'ping -c 5 8.8.8.8' # run command in new "background" window
tmux wait-for                          # display "Done!" only when ping command has finished

echo "Done!"

ここでのtmuxコマンドは実際にはこのような意味を持たないことを私は知っていますが、これは単に説明するためのものです。

バックグラウンドでコマンドを送信するか、別のペインでプロセスが終了するまで待つために、さまざまな解決策を検討しましたが、両方を正しく行う方法がまだ見つかりません。

編集

-d新しいウィンドウを作成するときに自動的に切り替わらないようにするオプションが存在することを指摘してくれたNicholasMarriottに感謝します。現在、唯一の問題は、コマンドが終了するまでメインスクリプトをブロックすることです。

うまくいくことを期待して次のことを試しましたが、うまくいきません(スクリプトが再開されません)。

tmux new-window -d 'ping -c 5 8.8.8.8; tmux wait -S ping' &
tmux wait $!

fgbg...を使用して)プロセスで遊ぶ方法があるかもしれませんが、私はまだそれを理解していません。

同様の質問:
[1]プログラムが完了するまでtmuxをブロックする
[2] Bash-tmuxでブロックスクリプトを実行する
[3] tmuxペインを非表示にする方法
[4]最初のコマンドが終了するのを待つ方法

ニコラスマリオット

使用することはできますwait-forが、プロセスが完了したら、チャネルを指定してそのチャネルに信号を送る必要があります。たとえば、次のようになります。

tmux neww -d 'ping blah; tmux wait -S ping'
tmux wait ping
echo done

スクリプトを並行して複数回実行する可能性があると思われる場合は、mktempまたは同様のを使用してチャネル名を作成することをお勧めします(そして、wait-for戻ったときにファイルを削除します)。

wait-for ペインやウィンドウが終了する、ペインが無音になるなどを自動的に待つことはできませんが、いつか実装されることを望んでいます。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

バックグラウンドでコマンドを実行し、特定のログ行を待ってから、フォアグラウンドで新しいコマンドを実行します

分類Dev

バックグラウンドでコマンドを実行し、特定のログ行を待ってから、フォアグラウンドで新しいコマンドを実行します

分類Dev

xshellでscreenコマンドを使用してバックグラウンドプロセスを実行する

分類Dev

xshellでscreenコマンドを使用してバックグラウンドプロセスを実行する

分類Dev

PowerShellでバックグラウンドプロセスとしてMavenコマンドを実行する方法

分類Dev

bashでバックグラウンドで実行すると、内側のforループが新しいbashプロセスを生成します

分類Dev

バックグラウンドプロセスが逆一致プロセスIDで終了するのを待ちます

分類Dev

スクリプトが終了した後、バックグラウンドプロセスを実行します

分類Dev

phpexecコマンドのバックグラウンドプロセスを終了します

分類Dev

バックグラウンドでプロセスを実行し、同じコマンドラインでディレクトリを変更する方法

分類Dev

新しいウィンドウを分割し、tmux を使用してこの新しいウィンドウでコマンドを実行する方法は?

分類Dev

bashで実行されているバックグラウンドプロセスの数を確認し、各バックグラウンドプロセスを「待機」するにはどうすればよいですか?

分類Dev

バッチ-新しいウィンドウで一連のコマンドを実行します

分類Dev

SASでrsubmitを使用して、プロセスが完了するのを待たずにバックグラウンドで実行する方法

分類Dev

SSH -tがバックグラウンドプロセスを待機しないのはなぜですか?

分類Dev

phpはバックグラウンドプロセスを実行します

分類Dev

バックグラウンドプロセスを起動し、端末はコマンドラインに戻る前にLF / CRを待機します

分類Dev

Pythonを使用してバックグラウンドで実行されるプロセスを作成します

分類Dev

ac#プログラムでsqlcmdプロセスを実行しているときにコマンドウィンドウに情報を出力する

分類Dev

tmux:プログラムでウィンドウを水平に分割し、2つのコマンドを実行しますか?

分類Dev

バックグラウンド プロセスのコマンド ラインのように Wildfly からstandalone.batを実行しますか?

分類Dev

バックグラウンドプログラムが終了するのを待っていますか?

分類Dev

コマンドプロンプトからさまざまなパラメータを取得するバックグラウンドプロセスとしてPythonスクリプトを実行するにはどうすればよいですか?

分類Dev

サブプロセスコマンドを実行して、バックグラウンドPythonでnodejsサーバーを起動する方法

分類Dev

フォアグラウンドターミナルアクセスを使用してバックグラウンドでコマンドを実行する

分類Dev

フォアグラウンドターミナルアクセスを使用してバックグラウンドでコマンドを実行する

分類Dev

Pythonのサブプロセスを実行してバックグラウンドのままにする方法

分類Dev

バックグラウンドプロセスを起動し、いつ終了するかを確認します

分類Dev

このコマンド置換がバックグラウンドジョブの終了を待機しているのはなぜですか?

Related 関連記事

  1. 1

    バックグラウンドでコマンドを実行し、特定のログ行を待ってから、フォアグラウンドで新しいコマンドを実行します

  2. 2

    バックグラウンドでコマンドを実行し、特定のログ行を待ってから、フォアグラウンドで新しいコマンドを実行します

  3. 3

    xshellでscreenコマンドを使用してバックグラウンドプロセスを実行する

  4. 4

    xshellでscreenコマンドを使用してバックグラウンドプロセスを実行する

  5. 5

    PowerShellでバックグラウンドプロセスとしてMavenコマンドを実行する方法

  6. 6

    bashでバックグラウンドで実行すると、内側のforループが新しいbashプロセスを生成します

  7. 7

    バックグラウンドプロセスが逆一致プロセスIDで終了するのを待ちます

  8. 8

    スクリプトが終了した後、バックグラウンドプロセスを実行します

  9. 9

    phpexecコマンドのバックグラウンドプロセスを終了します

  10. 10

    バックグラウンドでプロセスを実行し、同じコマンドラインでディレクトリを変更する方法

  11. 11

    新しいウィンドウを分割し、tmux を使用してこの新しいウィンドウでコマンドを実行する方法は?

  12. 12

    bashで実行されているバックグラウンドプロセスの数を確認し、各バックグラウンドプロセスを「待機」するにはどうすればよいですか?

  13. 13

    バッチ-新しいウィンドウで一連のコマンドを実行します

  14. 14

    SASでrsubmitを使用して、プロセスが完了するのを待たずにバックグラウンドで実行する方法

  15. 15

    SSH -tがバックグラウンドプロセスを待機しないのはなぜですか?

  16. 16

    phpはバックグラウンドプロセスを実行します

  17. 17

    バックグラウンドプロセスを起動し、端末はコマンドラインに戻る前にLF / CRを待機します

  18. 18

    Pythonを使用してバックグラウンドで実行されるプロセスを作成します

  19. 19

    ac#プログラムでsqlcmdプロセスを実行しているときにコマンドウィンドウに情報を出力する

  20. 20

    tmux:プログラムでウィンドウを水平に分割し、2つのコマンドを実行しますか?

  21. 21

    バックグラウンド プロセスのコマンド ラインのように Wildfly からstandalone.batを実行しますか?

  22. 22

    バックグラウンドプログラムが終了するのを待っていますか?

  23. 23

    コマンドプロンプトからさまざまなパラメータを取得するバックグラウンドプロセスとしてPythonスクリプトを実行するにはどうすればよいですか?

  24. 24

    サブプロセスコマンドを実行して、バックグラウンドPythonでnodejsサーバーを起動する方法

  25. 25

    フォアグラウンドターミナルアクセスを使用してバックグラウンドでコマンドを実行する

  26. 26

    フォアグラウンドターミナルアクセスを使用してバックグラウンドでコマンドを実行する

  27. 27

    Pythonのサブプロセスを実行してバックグラウンドのままにする方法

  28. 28

    バックグラウンドプロセスを起動し、いつ終了するかを確認します

  29. 29

    このコマンド置換がバックグラウンドジョブの終了を待機しているのはなぜですか?

ホットタグ

アーカイブ