PuTTY ou OUTRO - Continue executando o comando mesmo depois de sair do PuTTY [duplicado]


13

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.



Existe alguma razão para você não estar executando esses serviços como daemons?
SevenSidedDie

Os comandos destinam-se a serviços que devem ser executados com quase 100% de tempo de atividade "para sempre" ou uma tarefa de processamento de longa duração que deve terminar após algum tempo? Todas as respostas "funcionarão" para ambos os casos, mas a recomendação adequada será diferente.
Peteris

Qual distribuição específica do Linux você está usando? Descobri que a execução set -m;faz com que meus scripts continuem em execução depois que eu sair do CentOS e do RHEL.
ArtOfWarfare

Respostas:


33

Experimentar

Background_ScriptX &

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.


nohup definitivamente faz o trabalho
Pitto

Feliz por ajudar.
Eamonn Travers

15
A tela tem uma clara vantagem sobre o nohup : o nohup não permite retornar a um comando em execução (por exemplo, na manhã seguinte, para ler seu stdout e, em seguida, optar por matá-lo, etc). A tela permite fazer exatamente isso.
Andreas M

1
nohup envia a saída para um arquivo onde pode ser processado.
precisa

Para quem é nohupiniciante, é basicamente "no hangup" - com nohup, o HUPsinal hangup ( ) é ignorado.
Dan7119

20

Se você quiser ler a saída posteriormente, poderá usar screen:

screen -d -m my_command

Isso fornece um terminal desconectado ao qual você pode se conectar mais tarde ( screen -r) para ler a saída stdout / stderr.


2
+1. Por um lado, se você fechar o terminal (por exemplo, massa de vidraceiro) e depois abri-lo novamente e reconectar à tela ( 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.! :)
Alberto Santini

6

Outra opção se o nohupcomando não estiver disponível é usar o comando disown .

Primeiro, você pode visualizar suas tarefas em segundo plano executando jobsno 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.


3

Desde screenque foi mencionado: existem outros multiplexadores de terminal por aí. Eu gosto tmuxmuito, veja, por exemplo, essa outra questão de superusuário, tmux vs screen para uma comparação.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.