tmuxは自動的に開いたウィンドウに入ります。

tmuxは自動的に開いたウィンドウに入ります。

私のVPNサーバーには、別のウィンドウで実行されるいくつかのスクリプトがあり、GIFに示すように、数秒ごとに段階的に実行したいと思います。

ここに画像の説明を入力してください。

既存のtmuxバインディングはありますか?それともアクティブになると、tmuxセッションの開いているウィンドウ(ウィンドウの代わりに)を段階的に進めるように作成できるバインディングはありますか?これは、ループ内で次のキーストロークを実行するマクロでも機能します。また、ウィンドウを介した段階的な実行を停止するために同じバインディングを使用したいと思います。

Ctrl+ b、、、n(3秒間待機)

答え1

これを行うには、独自の小さなシェルスクリプトを作成できます。たとえば、mytmuxユーザーの場所のいずれかにファイルを作成し、次のコンテンツでPATH実行可能にします。chmod +x mytmux

#!/bin/bash
rotate(){
        file=/tmp/mytmux.$session
        if [ -f "$file" ]
        then rm "$file"
        else touch "$file"
             while [ -f "$file" ] && tmux next-window -t "$session"
             do     sleep 3
             done
        fi
}
case $1 in
-rotate)shift
        session=${1?session name}
        rotate ;;
esac

-rotate後で別のヘルパールーチンを追加する場合に備えて、パラメータを使用するように作成しました。あなたに~/.tmux.conf適したバインディングを追加してください。たとえば、次のようになります。

bind-key C run-shell -b 'mytmux -rotate #{session_name}'

これは-bバックグラウンドで実行されます。初めて入力するときはcontrol-bCtmpファイルが存在しないため、whileループはnext-window3秒ごとにコマンドを発行します。 tmpファイルを2番目に削除すると、最初のスクリプトが停止します。再起動する前に3秒待つ必要があります。それ以外の場合は、2つのスクリプトが実行される可能性があります!

関連情報