bashスクリプトはtmuxを起動し、画面を水平に5回分割し、毎回watch -n1 tail -n5を実行できますか?

bashスクリプトはtmuxを起動し、画面を水平に5回分割し、毎回watch -n1 tail -n5を実行できますか?

watch -n1 tail -n5 file_ntmuxを起動して画面を水平に分割して、各スクリプトで実行するbashスクリプトを作成できますか?デフォルトでは、スクリプトを複数回起動し、監視したいさまざまなファイルに進行状況を記録します。 10個のファイルを直接開くのではなく、スクリプトで実行できるとよいでしょう。ところで、私はtmuxを使ったことがないので、このように質問します。

答え1

この試み。まず、別々のtmuxセッションを設定してから、tailコマンドを使用してウィンドウを開き、ウィンドウのレイアウトを設定してセッションに接続します。

for f in `seq 1 10`; do
if [[ $f -eq 1 ]]; then
        tmux new-session -d -s my_session_name "watch -n1 tail -n5 file_${f}"
    else
        tmux split-window -d -t my_session_name:0 -p20 -v "watch -n1 tail -n5 file_${f}";
    fi
done
tmux select-layout -t my_session_name:0 even-vertical
tmux attach-session -t my_session_name

この実行の複数のインスタンスが必要な場合は、すべての発生をmy_session_nameセッションごとに一意のものに変更する必要があります。

また、タイトルには5つのウィンドウが記載されていますが、投稿の本文には10のファイルが記載されています。そのままのコードは10個のウィンドウで10個のファイルを開きます。seq 1 10実際に希望のウィンドウ/ファイル部分を変更してください。

答え2

ありがとう@クサラナンダ 初期スクリプトの場合。必要な追加エントリを追加しました(Ssh IPベースのカスタムウィンドウのタイトルなど)。

#!/bin/bash

set -ex

key_path="your-key.pem"
ssh_user="user"
ssh_list=(1.2.2.2 3.3.3.2 5.5.5.6)

split_list=()
for ssh_entry in "${ssh_list[@]}"; do
    ssh-keygen -R $ssh_entry
    split_list+=( split-window ssh -i ${key_path} -o StrictHostKeyChecking=no ${ssh_user}@$ssh_entry ';' select-pane -T "-- $ssh_entry " ';')
done

tmux set -g pane-border-status top
tmux set -g pane-border-format "#{pane_index} #{pane_current_command} #{pane_title}"

tmux new-session "Multi-Session-Ssh" ';' \
    "${split_list[@]}" \
    select-layout tiled ';' \
    set-option -w synchronize-panes

関連情報