Como manter um comando iniciado no shell em execução se eu sair do shell?

12

Quais métodos existem para manter um comando iniciado a partir do shell em execução após o logout do shell?

NES
fonte

Respostas:

11
  • Para colocar o aplicativo em segundo plano, use &:

    command &
    
  • Se você deseja fechar o terminal, e manter o aplicativo em execução, você pode usar várias opções: , e .screen Tela de instalaçãodtach Instalar dtachnohup

    nohup command &
    
  • A tela é útil, pois você pode reiniciar uma sessão e o dtach também é divertido.

  • Veja os links a seguir para obter mais informações

karthick87
fonte
adicionar um &no final do comando também não funciona?
theTuxRacer
2
@ Kaustubh-P usando & geralmente é um bom hábito para fechar terminais através do comando 'exit', sem pressionar o botão Fechar X. & faz com que o comando seja executado no fundo. Mas se o shell pai fechar. que ainda pode forçar a saída dos programas em segundo plano.
karthick87
5

Use o comando nohup como este:

nohup gedit /home/user/file.txt &
Javier Rivera
fonte
Como até mesmo remover nohup: ignorando entrada e redirecionando
Amruth A
5

Um comando útil (bash?) É disown. o bom disso é que ele funciona para um trabalho que já está em execução (a propósito, você nega trabalhos, não processos, portanto, é necessário fazer um ctrl-Z, bgantes de executar o repúdio em seu trabalho. Por exemplo, imagine-se fazendo o seguinte:

local % ssh some.where.com
remote % verylongscript.sh

Agora você percebe que precisa ir, mas não quer que o script seja eliminado ao sair, então você

ctrl-Z
remote % bg
remote % disown
remote % exit
local %

Agora, remoteseu script ainda está em execução.

Yossi Farjoun
fonte
1

eu uso

nohup mycommand &

Por exemplo, para abrir um servidor virtual VirtualBox, digite o seguinte em um shell remoto (que eu fecho então):

nohup VBoxHeadless --startvm "myvm" --vrdp=off &
Ivan
fonte