Tente
nohup Background_ScriptX &
nohup garante que um processo não seja finalizado quando um terminal é fechado. O & símbolo empurra o processo para o fundo.
Espero que isso tenha sido útil.
Eu tenho alguns comandos que preciso executar. Esses comandos precisam ser executados continuamente depois que eu saio da minha interface. Quando eu tenho acesso ao Linux GUI, eu executo algo como:
cd /home/testuser/Scripts*
xterm -hold -T "Background_Script1" -e "service1-start.sh" &
sleep 10
xterm -hold -T "Background_Script2" -e "service2-start.sh" &
Qualquer ajuda será muito apreciada.
Se você quiser ler a saída em uma data posterior, use screen
:
screen -d -m my_command
Isto lhe dá um terminal destacado ao qual você pode se conectar ( screen -r
) para ler a saída stdout / stderr.
Outra opção se o comando nohup
não estiver disponível é usar o desiste do comando.
Primeiro, você pode ver suas tarefas em segundo plano executando jobs
no terminal. Você pode obter o número do trabalho de lá.
Agora é só executar disown %[job number]
e o processo será desanexado do terminal atual e permanecerá ativo quando você sair.
Nota lateral: verifique se você está fazendo a pergunta correta. Se você estiver executando serviços reais à medida que insinuar em sua amostra, talvez queira investigar como criar um daemon no SO de sua escolha. Isso é para garantir que o processo ainda seja executado após uma reinicialização e para torná-lo mais consistente com outros serviços.
Espero que isso ajude.
Como screen
foi mencionado: existem outros multiplexadores de terminal lá fora. Eu gosto muito de tmux
, veja por exemplo esta outra pergunta de superusuário, tela vs tmux para uma comparação.
Você também pode tentar: setsid
O Setsid também funciona para programas em segundo plano e permite que eles continuem rodando após a sessão do terminal / ssh ser desconectada.
Use assim:
setsid program-to-background
Página principal: link