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

관련 정보