Existe também um programa chamado "dtach" que faz exatamente isso, sem sobrepor seu próprio buffer de tela. (Eu sei que a resposta é muito tarde, mas eu postei, no entanto, para aqueles que google e tropeçam na página)
Como posso tornar as aplicações de terminal imunes ao fim do emulador de terminal, mas ainda posso usar todos os recursos do terminal virtual?
\ begin {UPDATE}
Eu quero que meu aplicativo de terminal permaneça ativo e acessível se eu acidentalmente fechar o emulador de terminal. Essa funcionalidade é fornecida pela tela e pelo tmux, mas eles têm problemas com as cores e eles limpam a tela. Sim, eu posso rodar o shell dentro da tela, mas eu não quero que o shell permaneça ativo a menos que haja algum outro programa rodando.
\ end {UPDATE}
Eu vejo que isso deve ser algo como a tela, mas sem a emulação do terminal VT100, algo que apenas se aplica ao aplicativo que faz o terminal "terminal proxy" (como enviar algo para stdout / stderr ou usar stty para definir opções de terminal) para o terminal em que este proxy é executado.
// Eu sei sobre screen
e altscreen on
, mas isso faz isso ( screen
with TERM=screen
):
ouisto(screen
comTERM=rxvt-unicode
):
enquanto eu quero isso ( rxvt-unicode
sem screen
):
Eudescobriquetudoparecebemseeucompilarrxvt-unicode
comUSE=-xterm-color
(naverdadevimseparececomasegundaimagemmesmosemtelaseeuadicionarestaopçãoUSE)edefinirTERM=screen-256color
,maseufaçoNãogostodessasoluçãoalternativaporqueelarealmentemudadecorenãopossotercertezadequeelasempreseráalteradaapenasdestamaneira:
Yes, I can run the shell inside screen, but I do not want the shell remain alive unless there is some other program running.
Uma solução seria executar o shell a partir da tela (como você disse que não queria), mas depois adicionar um trabalho Cron para executar a cada 10 minutos para verificar se há sessões de tela para fechar.
Se todas as sessões de tela forem desanexadas e nenhum programa além de shells estiver sendo executado, você poderá fechá-las.
Use sakura . Ele avisa se você tentar fechar um vterm com um programa em execução.
Você pode usar a tela para iniciar diretamente seu aplicativo para que a tela saia da aplicação:
screen <yourprog>
Veja o quinto parágrafo da manpage para mais detalhes.