Você pode usar nohup python ChatServer_Listen.py &
nohup
registrará a saída do seu programa em nohup.out
file.
Para interromper seu programa, você precisa usar o comando kill your_pid
.
Pergunta estranha aqui, mas estou jogando com uma combinação de servidor / cliente de bate-papo python no meu servidor Linux. Atualmente, se eu fizer isso:
$: cd /path/to/chat/server
$: sudo python ChatServer_Listen.py
Isso inicia o loop de execução do aplicativo python e o servidor atende conexões TCP de entrada.
Meu problema é, se eu fechar minha janela de terminal, a sessão ssh é encerrada e o aplicativo python deixa de ser executado, e os clientes não podem mais se conectar. Eu prefiro não executar uma instância do terminal 24/7 localmente. Posso configurar esse aplicativo python como algo que pode ser executado em segundo plano no Linux? Se sim, como? Idealmente, seria como o Apache, que é executado como um serviço.
Obrigado por me ajudar!
Você deseja usar o Supervisor . Ele é feito exatamente para esse propósito, além de fazer coisas como reiniciar o processo se ele morrer, fornecer uma GUI baseada na web para controlá-lo, etc.
Como explicado aqui:
"
Usando o Job Control do bash para enviar o processo para o segundo plano:
[crtl]+z
bg
E, como Sam / Jan mencionou, você deve executar a renúncia para evitar a morte do processo depois de fechar o terminal.
disown -h
"
A maneira correta de fazer isso é alterar o código para daemonizar o processo corretamente. Uma maneira de fazer isso é usar o módulo daeminize
.
A maneira conveniente de fazer isso, que também funciona com software que você não pode modificar, é iniciá-lo assim
nohup python ChatServer_Listen.py >logfile.txt 2>&1 </dev/null &
Note que não usei sudo
. Isso é porque você deve colocar a linha acima em um shell script e rodar o shell script com o sudo.