Continue tarefas / trabalhos em segundo plano do SSH ao fechar o SSH

27

Eu tenho a mesma pergunta que aqui, mas mesmo além disso.

Se eu sair / sair da conexão SSH, preciso que meu programa seja executado em segundo plano. Antes de sair, digito bge jobspara verificar a tarefa em execução em segundo plano, mas depois de sair do SSH, o programa não é executado, ele fecha quando eu fecho a janela do SSH.

O que posso fazer se quiser que meu programa continue em execução após fechar a janela SSH? Eu uso, nohup screenmas também não funciona, ou estou perdendo alguma coisa?

Huei
fonte
Bem-vindo ao Super Usuário! Por favor, não coloque sua resposta na pergunta. Poste-a como resposta abaixo assim que puder (em cerca de 7 horas) usando o botão Responda à sua pergunta . Obrigado. (Observe também que não há necessidade de adicionar <br/>s para o seu posto apenas fazer parágrafos conforme necessário E enquanto você está nisso, por favor use a capitalização apropriada Faz suas mensagens mais fácil de ler....)
slhck
BTW não há necessidade de usar bgou nohupao usar screen. Também esta questão está relacionada.
justbrowsing
você faz verificar esta discussão @ estouro de pilha stackoverflow.com/questions/285015/...
Ashildr

Respostas:

46

Quando você usa, screené necessário desanexar com CTRL+A+ Dantes de sair ssh.

Como alternativa, se você deseja executar um processo diretamente com a tela, pode usar

screen -dmSL [session name] [commands]
  • -d inicia uma sessão na tela e se desconecta imediatamente
  • -m força a criação de uma nova sessão de tela
  • -S permite que você dê um nome à sessão
  • -L ativa o log para ~/screenlog.0

exemplo:

screen -dmSL workstuff myscript.sh

Você pode:

retomar mais tarde usando screen -x workstuff

ou

verifique o arquivo de log less -r ~/screenlog.0

só navegando
fonte
14

Use tmux. Não tenho certeza se screenainda está em desenvolvimento ativo. É uma espécie de preferência, mas como alguém que usa tmux, posso testemunhar que ele foi configurado em cerca de 5 minutos e funcionou perfeitamente.

Em um sistema baseado no Debian (na máquina remota):

sudo apt-get install tmux

então entre tmuxpara entrar, execute o processo que você precisa e pressione Ctrl+ e Bdepois D(isso sai da sessão do tmux). Em seguida, você pode sair do SSH.

Quando precisar voltar / verificar novamente, inicie o SSH e digite tmux attach. O levará de volta à sua tmuxsessão.

tmuxpossui muito mais recursos, conforme detalhado aqui. Mas isso deve resolver seu problema imediato.

Boa sorte!

evamvid
fonte
7

Por fim, resolvi usando screen:

No modo de tela, desconecte-o usando CtrlAD. Então você pode fechar a janela SSH.

Huei
fonte
5

nohup use: O primeiro dos comandos abaixo inicia o programa abcd em segundo plano, de forma que o logoff subsequente não o interrompa.

$ nohup abcd &

$ exit

Ashildr
fonte