screenrc subshell para cada janela

4

.screenrc:

shell -${SHELL}
caption always "%n(%t) %= %{b}@%H[%l] : %{r}%c:%s"
termcapinfo xterm ti@:te@
termcap  xterm 'AF=\E[3%dm:AB=\E[4%dm'
terminfo xterm 'AF=\E[3%p1%dm:AB=\E[4%p1%dm'
startup_message off

screen -t server 0 rails s
screen -t spork 1 bundle exec spork
screen -t dev_log tail -f ./log/test.log

Pressionar Ctrl + C em qualquer uma das janelas de tela acima destrói. Eu gostaria de ter um subshell para cada, se eu pressionar Ctrl + C do que eu acabei de sair para essa sub-camada.

Agora mesmo estou executando screen e criando todas as janelas acima manualmente, renomeando-as e ela funciona muito bem. Eu posso terminar qualquer programa em qualquer janela, fazer outra coisa e executá-lo novamente. O que eu quero alcançar é ter essa configuração para executar com apenas um comando.

    
por pawel7318 03.04.2014 / 13:05

2 respostas

1

Eu decidi criar outra questão relacionada Como manter o Bash correndo após a execução do comando? para esquecer a grande imagem e focar no problema principal. Trabalhou como pretendido e finalmente foram apresentadas 3 formas de atingir o objetivo:

  1. solução alternativa que não era ruim
  2. portátil (POSIX)
  3. simples

e eu escolho usar o terceiro dessa maneira:

~ / .run_screen:

#!/bin/bash
/bin/bash -i <<<"$*; exec </dev/tty"

~ / .screenrc:

screen -t server 1 ${HOME}/.run_screen rails s
screen -t spork 2 ${HOME}/.run_screen bundle exec spork
screen -t dev_log 3 ${HOME}/.run_screen tail -f ./log/development.log
screen -t test_log 4 ${HOME}/.run_screen tail -f ./log/test.log
screen -t bash 0  
    
por 05.04.2014 / 14:50
1

Que tal em vez de um subshell, basta abrir um novo quando o aplicativo for concluído?

screen -t htop bash -i -c "htop && bash"
    
por 05.04.2014 / 04:49