Eu tenho alguns comandos que preciso executar. Esses comandos precisam ser executados continuamente, mesmo depois que eu sair da minha interface. Quando tenho acesso à GUI do Linux, 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.
linux
command-line
putty
process
gnu-screen
user3331952
fonte
fonte
set -m;
faz com que meus scripts continuem em execução depois que eu sair do CentOS e do RHEL.Respostas:
Experimentar
nohup garante que um processo não seja finalizado quando um terminal estiver fechado. O símbolo & coloca o processo em segundo plano.
Espero que isso tenha sido útil.
fonte
nohup
iniciante, é basicamente "no hangup" - com nohup, oHUP
sinal hangup ( ) é ignorado.Se você quiser ler a saída posteriormente, poderá usar
screen
:Isso fornece um terminal desconectado ao qual você pode se conectar mais tarde (
screen -r
) para ler a saída stdout / stderr.fonte
screen -r
), você também terá toda a saída produzida pelo programa e, caso contrário, "perderá". Além disso, a tela pode fazer muitas coisas incríveis, como telas divididas, etc.! :)Outra opção se o
nohup
comando não estiver disponível é usar o comando disown .Primeiro, você pode visualizar suas tarefas em segundo plano executando
jobs
no terminal. Você pode obter o número do trabalho de lá.Agora basta executar
disown %[job number]
e o processo será desconectado 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 conforme sugerido em sua amostra, convém examinar como criar um daemon no sistema operacional de sua escolha. Isso é para garantir que o processo ainda seja executado após uma reinicialização e torná-lo mais consistente com outros serviços.
Espero que isto ajude.
fonte
Desde
screen
que foi mencionado: existem outros multiplexadores de terminal por aí. Eu gostotmux
muito, veja, por exemplo, essa outra questão de superusuário, tmux vs screen para uma comparação.fonte
Você também pode tentar:
setsid
Setsid também funciona em programas em segundo plano e permite que continuem em execução após a sessão do terminal / ssh ser desconectada.Use-o assim:
Página de manual: http://man7.org/linux/man-pages/man2/setsid.2.html
fonte