Um script bash pode iniciar o tmux, dividir a tela horizontalmente 5 vezes e executar watch -n1 tail -n5 em cada um deles?

0

É possível fazer um script bash que inicie o tmux e divida a tela horizontalmente e execute watch -n1 tail -n5 file_n em cada uma delas? Basicamente estou iniciando um script várias vezes e escrevo seu progresso em arquivos diferentes que gostaria de monitorar. Seria legal se eu pudesse executá-lo de um script em vez de abrir manualmente 10 arquivos por mim mesmo. Eu nunca usei tmux btw é por isso que estou perguntando isso.

    
por ChiseledAbs 15.12.2016 / 18:14

1 resposta

4

Tente isso. Primeiro, ele estabelece uma sessão do tmux desanexada, depois abre suas janelas com comandos finais, depois define o layout das janelas e, em seguida, anexa à sessão.

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

Se você deseja ter várias instâncias dessa execução, é necessário alterar todas as ocorrências de my_session_name para serem algo exclusivo para cada sessão.

Além disso, o seu título menciona 5 janelas, mas o corpo do seu post menciona 10 arquivos. O código como está irá abrir 10 arquivos em 10 janelas. Altere a parte seq 1 10 para quantas janelas / arquivos você realmente quiser.

    
por 15.12.2016 / 21:34

Tags