como depurar / corrigir falhas de tela na inicialização

1

(essa é uma pergunta em referência à versão OS X da tela do Gnu. Não sei se isso faz alguma diferença - e imaginei que o Unix & Linux teria uma tela melhor do que o Ask Different .)

Quando estou fisicamente em meu computador em um terminal e digito um comando como

screen -dRR my_session_name

Eu posso ter acesso a uma nova sessão de tela.

Enquanto em SSH, parece que posso voltar a anexar a sessões se elas já estiverem em execução:

screen -R my_session_name

mas criando uma nova sessão (independentemente de existir ou não outra sessão, mas mais frustrante quando nenhuma) irá suspender , a única maneira de escapar de ser um ^Z para colocá-la em segundo plano e, em seguida, um fg para reiniciar o trabalho, quando eu sou informado de que ele morreu ( Sorry, cannot contact session "processnumber.tty.hostname" again. )

Eu tentei executar sudo dtruss screen (a versão do Mac OS X de strace ), mas não tenho ideia do que procurar na saída (extremamente detalhada).

Estou fora da minha máquina por um tempo (em uma cidade diferente por alguns dias) e realmente preciso iniciar uma nova sessão de tela!

meu ~/.screenrc :

# Set the shell to use fish:
shell "/usr/local/bin/fish"

# Make xterm scrolling work properly with screen.
# Note, this works in Terminal.app and iTerm too.
#termcapinfo xterm-256color|xterm-color|xterm|xterms|xs|rxvt ti@:te@

# Custom escape character like this:
escape ^Xx

# always create these sessions for me:
screen -t "foo" 1

# test to see if I can create new screens from SSH in any way:
#nonblock on

Eu tentei, como você pode ver, adicionar e comentar várias opções para tentar resolver isso. (apenas agora, eu tentei com fish e bash , das sessões fish e bash outer, com e sem noblock , e com e sem screen -t .) Eu também vejo o mesmo comportamento em conexões muito rápidas e muito lentas.

Eu ficaria muito grato por qualquer uma das seguintes informações:

  • sugestões para encontrar o problema (partes importantes da saída strace / dtrace, alguma outra coisa?)
  • sugestões de novas opções .screenrc ,
  • algo completamente diferente?

Estou feliz em postar mais informações, mas queria evitar toda a saída dtruss , já que são centenas de linhas.

    
por tehwalrus 12.04.2014 / 22:00

1 resposta

0

resposta lateral, específica do OS X, neste caso.

Uma opção e a que usei no final, neste caso, foram as seguintes:

Use algo para lançar screen localmente, o que funcionará e, em seguida, anexar novamente à sessão.

Eu escrevi um programa python que gera e executa um programa de script apple que abre uma nova janela Terminal.app e executa o comando que você pediu, mesmo quando você está com SSH (obviamente, a conta deve estar logada em um GUI na própria máquina para que isso funcione).

Ele é chamado de "osxhijack" e está no github aqui . Você invoca assim:

hijack screen -dRR my_new_session

e, em seguida, você pode reconectar imediatamente usando:

screen -R my_new_session

Se uma resposta "real" aparecer (ou seja, se eu descobrir o que estava / está errado com a instalação da minha tela), atualizarei essa pergunta com uma nova resposta.

    
por 13.04.2014 / 18:33