job control e ssh

4

Eu não consigo descobrir uma maneira decente de gerenciar trabalhos sobre o ssh. Eu quero começar um trabalho em uma sessão ssh, sair, fazer login, fazer um fg, verificar o trabalho, sair e repetir todo o processo. nohup parece não funcionar bem.

Eu usei este comando

 $ nohup script & > nohup.out 
 [1] 28128
 $ nohup: ignoring input and appending output to 'nohup.out'
 [1]+  Exit 255                nohup script

Se eu fizer isso

$ jobs
$ ps -ef |  grep script

Não recebo nada, ou seja, o processo não é encontrado.

Além disso, uma questão relacionada que tenho é: Se eu estiver em uma sessão ssh e quiser enviar um trabalho para o segundo plano, o ctrl-z não funcionará. O que fazer?

Alguém pode me ajudar?

    
por devin 13.06.2009 / 21:13

6 respostas

19

bem - uma das opções é usar a tela .

  1. você faz o login
  2. você ativa a tela
  3. você executa seu trabalho
  4. você pressiona ctrl + a d para desanexar
  5. você faz logoff
  6. após algumas horas em que você faz login e executa a tela -r - você tem o resultado do seu shell / trabalho à sua frente. ou talvez ainda seja executado ...

mais exemplos aqui .

outro - provavelmente pior se for um trabalho de tempo - a opção é demonizar seu script de shell, adicionar o registro correto e usar o daemon start-stop para executá-lo em segundo plano até que ele seja concluído. status - pode ser verificado nos logs produzidos.

    
por 13.06.2009 / 21:18
8

Eu uso a tela também para isso ... normalmente eu faço login e executo

screen -S $meaningful-name

Então, quando eu reconecto, apenas corro

screen -r $meaningful-name

Eu também geralmente coloco meu nome de usuário no nome da sessão da tela, se eu estiver rodando como root em um de nossos servidores, para que outras pessoas possam vê-lo e se conectar a ele, se necessário.

    
por 13.06.2009 / 21:47
6

Você pode usar o programa screen . Eu uso para gerenciar vários programas shell interativos.

Uso:

screen
startyoujob.sh
<C-A D> (Ctrl A then D, will detach your session)
screen -r (this will reattach your session)

Algumas dicas de screen no Wiki do Arch Linux , o official screen web site , e alguns dicas e truques para o seu screenrc (com screenshots).

    
por 13.06.2009 / 21:20
3

Se você quiser usar a tela de maneira autônoma, use:

# screen -d -m script.sh

Isso colocaria seu script em segundo plano, separado! Agora você pode facilmente sair e continuar o que estava fazendo.

    
por 14.06.2009 / 07:31
1

Se você não quiser usar a tela, a única outra opção seria enviar toda a saída para um arquivo de log, e executar a cauda no arquivo de log para ver o progresso. Isso pressupõe que o trabalho não é interativo, o que provavelmente deve ser o caso de qualquer trabalho de longa duração de qualquer maneira. Se você precisar parar o trabalho prematuramente, você pode usar o ps para encontrar o pid e simplesmente matá-lo.

Olhando seu comando acima, você deve apenas poder verificar o conteúdo de nohup.out. Nohup não é necessário, no entanto, você pode iniciar o job, executar ^ Z e digitar 'disown' (no bash de qualquer forma - isso removerá o job da lista de jobs, mas não há como evitar isso).

    
por 14.06.2009 / 04:00
0

Você pode combinar screen e ssh em um com este comando:

ssh hostname -t screen -RD

Pressione Control-A Control-D para desconectar.

    
por 10.08.2009 / 13:55