A "tela" refere-se a um programa mencionado em Como reconectar-se a uma sessão ssh desconectada . Essa é uma boa instalação.
Mas há uma pergunta que eu realmente gostaria de saber. Como sei se estou executando dentro de uma "tela"? A diferença é:
- Se sim, eu sei que posso fechar com segurança a janela atual do terminal, por exemplo, fechar uma janela PuTTY, sem perder minha sessão do shell (Bash etc.).
- Se não, sei que tenho que cuidar de quaisquer trabalhos pendentes antes de fechar a janela do terminal.
Melhor, eu gostaria que esse status fosse exibido no prompt do PS1 para que eu possa vê-lo a qualquer momento automaticamente.
linux
gnu-screen
Jimm Chen
fonte
fonte
Respostas:
(Roubado de " Como posso saber se estou em uma tela? " No StackOverflow e de autoria do usuário jho . PS Você não pode votar em uma duplicata nos sites do StackExchange.)
Verifique
$STY
. Se for nulo, você está em um terminal "real". Se ele contiver algo, é o nome da tela em que você está.Se você não estiver na tela:
Se você estiver na tela:
Se você usar o tmux em vez da tela, verifique também
$TMUX
. Para adicionar isso ao seu prompt, adicione o seguinte ao seu~/.bashrc
:fonte
sudo
dele, por padrão, não herdará variáveis de ambiente, inclusive$STY
. Mas é normalmente propagada para o ambiente sudo, então talvez verificar se quer ou$TERM
$STY
$TERM=="screen"
Procure
$STY
quais fornece detalhesscreen
usados para se comunicar consigo mesmo;$WINDOW
será então oscreen
número da janela atual .fonte
A verificação simples Eu costumo usar é só apertar Ctrl- a:
Se o cursor pular para o início da linha , não estou dentro de uma sessão de tela.
Se nada acontecer , sei que estou dentro de uma sessão de tela e que acabei de usar a tecla de controle de tela. Em seguida, pressiono a(pulo para o início da linha), w(mostra as janelas da tela atual) ou executo algum outro comando de tela "inofensivo" para voltar ao prompt de comando.
(Obviamente, isso só funciona se você estiver executando o bash ou algum outro software que "salte para o início da linha" ou faça algo equivalente inofensivo ao pressionar Ctrl-a.)
fonte
Bem, na maioria das vezes (na ausência de tentativas de alguém para estragar tudo), você
TERM
será definido comoscreen
(ou pelo menos mencionaráscreen
algum lugar).A solução fácil para o problema é apenas executar a tela em qualquer lugar. Não saia de casa sem ele, eu digo.
fonte
$TERM
também se propaga normalmentesudo
, o que é um plus!Eu mantenho isso no meu
.bashrc
:Não é infalível, mas sempre que crio uma nova tela, ele coloca o número da janela no prompt. Se não estou correndo
screen
, não há número.fonte
Eu tenho um jeito ainda mais legal.
Adicione o seguinte ao seu ~ / .screenrc e você verá uma linha de status na parte inferior (mostrando no texto invertido a data, hora e carga do sistema. Mais códigos de escape encontrados no link da página de manual abaixo.
Fonte isso quando em uma sessão de tela com
ctrl-a:source ~/.screenrc
.Eu tenho que agradecer a Kyle Rankin do Linux Journal por isso. Veja seu artigo fantástico em http://www.linuxjournal.com/article/10950 . A seção da página de manual a que ele se refere pode ser encontrada em http://www.gnu.org/software/screen/manual/screen.html#String-Escapes .
fonte
você também pode recuar na árvore de processos
$$
para ver se encontra uma instância de tela. a cadeia exata provavelmente dependerá da sua configuração - no meu OS X box, umazsh
tela interna temlogin
como pai,SCREEN
como avós escreen
como bisavós.fonte