watch -n1 tail -n5 file_n
tmux를 시작하고 화면을 가로로 분할하여 각 스크립트에서 실행하는 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