Obter status de saída de um processo por SSH

2

Não sei como google isso (eu tentei com algumas coisas e não consegui muito) ou como isso é chamado mesmo. Este é o meu fluxo de trabalho típico:

  1. SSH to a server
  2. run something there and leave it running in the background (bg command for example)
  3. exit SSH and come back later

Existe alguma maneira que eu poderia, quando eu voltar mais tarde, ver se o processo foi morto e em que status foi morto (segfault ou outra coisa) ou obter qualquer tipo de informação de status de saída do processo que eu estava executando? Por exemplo, se eu o executar normalmente e deixar meu terminal aberto, ele irá imprimir falha de segmentação ou qualquer outra coisa, mas não tenho idéia de como obter esse status depois que eu desconectei e conectei de volta.

    
por darxsys 08.04.2014 / 13:06

3 respostas

1

Use screen ou tmux para fazer sua sessão interativa persistir depois que você se desconectar.

Para screen , você pode separar a sessão com Ctrl a seguido por d . Você verá uma mensagem como

[detached from 12345.pts-9.hostname]

Você pode desconectar com segurança. Quando você se reconectar, screen -r irá colocá-lo de volta onde você estava.

Para tmux , use Ctrl b e d para desanexar e tmux attach para reconectar.

    
por 08.04.2014 / 13:25
1

use o comando # screen para o processo em segundo plano você pode facilmente verificar o processo de fundo na tela para mais informações consulte este site - > link

    
por 08.04.2014 / 13:15
1

Uma maneira é simplesmente redirecionar a saída do programa para um arquivo. Em um shell bash , você pode fazer isso:

{ myprog; echo "Exit status: $?"; } </dev/null &>output_file & disown

Observe que, se você for sair da sessão ssh , será necessário desconectar o processo do terminal, redirecionando todas as saídas conforme acima.

Se você quiser evitar o login novamente para verificar a saída do comando, uma opção é fazer com que o servidor envie a saída por e-mail para você (desde que esteja configurado corretamente para isso). Criar função no seu .bashrc no servidor pode ser uma maneira mais fácil se você precisar repetir isso com frequência:

run_and_email () {
  {
    {
      "$@"
      echo "Exit status: $?"
    } 2>&1 |
    mail -s "$1 output" [email protected]
  } </dev/null &>/dev/null & disown
}
    
por 08.04.2014 / 13:34

Tags