Programaticamente executa tarefas em segundo plano em uma tela dividida?

3

Estou tentando descobrir como criar um comando chamado runbg que aceitará subcomandos para serem executados em segundo plano e criar uma tela dividida para cada subcomando. Quando um subcomando é concluído com sucesso, a tela dividida é fechada; Se um subcomando falhar, a tela permanecerá aberta com o erro até que o usuário feche a tela com o sinal de término. Quando todas as telas estiverem fechadas, o comando estará concluído e a execução continuará. Por exemplo,

runbg "ping -t 5 google.com" "ping -t 10 microsoft.com"
echo "done"

Eu descobri que posso fazer:

ping -t 5 google.com &
ping -t 10 microsoft.com &
wait

O que realiza o lado paralelo das coisas, no entanto, cada comando envia tudo para o mesmo terminal, o que é muito barulhento. Daí o desejo de uma configuração de tela dividida.

Pesquisando aqui, descobri Tela GNU que parece lidar com o lado da tela das coisas , mas parece que requer um arquivo .screenrc - que, embora seja possível fazer programaticamente, é um pouco chato, como eu imagino que isso significaria que eu precisaria escrever um arquivo tmp aleatório em algum lugar.

Eu encontrei esta resposta que entra em tela sem o .sreenrc , mas não consigo descobrir como faça o material da tela dividida nele.

Então, resumindo:

  • Existe algo que já faz a funcionalidade que eu estou procurando com runbg ?
  • Se não, o GNU Screen é o que eu quero para isso? Preciso usar um arquivo .screenrc ou existe uma maneira de realizar as telas divididas sem uma?
por balupton 11.04.2017 / 01:08

1 resposta

2

Você pode fazê-lo com o tmux encadeando juntos a janela dividida e as chaves de envio como esta:

tmux new session \; split-window -v \; send-keys 'ping -t 5 google.com' C-m \; split-window -h \; send-keys 'ping -t 10 microsoft.com' C-m \;
    
por 11.04.2017 / 03:45

Tags