Não vejo por que seria parar, mas tente
nohup ./gameServer.py &
Isso deve fazer o gameServer.py ignorar o sinal de desconexão quando você desconecta o PuTTY
Eu tenho meu script gameServer.py rodando remotamente através do PuTTy.
gameServer.py tem esta aparência:
while True : (( listen for packets )) (( send all packets to all clients ))
QUANDO executo o script normalmente:
./gameServer.py
Funciona perfeitamente, mas o terminal está amarrado. Naturalmente sair do PuTTy termina meu script.
Eu quero ser capaz de fechar o PuTTY e ter esse script perpetuamente, então tentei:
./gameServer.py &
Mas isso realmente não funciona e eu não entendo o porquê. Primeiro de tudo, ele não está recebendo ou enviando nenhum pacote quando executado nesse modo &
, em segundo lugar ele será "+ Interrompido" sempre que eu digito entrar ou QUALQUER COISA no console.
Tente colocar em segundo plano com o comando: bg
user@rkt:~$ sleep 10
^z
[1]+ Stopped sleep 10
user@rkt:~$ bg
[1]+ sleep 10 &
user@rkt:~$ jobs
[1]+ Running sleep 10 &
Você pode mudar seu processo para ser um daemon , então você pode detê-lo sem matá-lo:
def become_daemon():
pid = os.fork ()
if pid != 0: # if pid is not child...
sys.exit(0)
os.setsid() # Create new session and sets process group.
pid = os.fork () # Will have INIT (pid 1) as parent process...
if pid != 0: # if pid is not child...
sys.exit(0)
e no seu script simples invoca esta função
Você pode ver esta receita do ActiveState para saber mais sobre o duplo-fork em> mecanismo e implementação mais precisa.
Outra maneira de fazer logoff e deixar as tarefas em execução é com o comando " disown <jobid>
". Ele permite desvincular jobs da sessão de login atual, para que você possa fazer logoff.
Isso não tem como objetivo responder ao seu problema python, não teria a menor idéia de por onde começar, mas uma solução temporária / utilidade útil é chamada screen
yum install screen
ou apt-get install screen
se você estiver usando Debian / Ubuntu ou Redhat / Centos / Fedora irá instalá-lo.
A tela fornece uma sessão de shell que você pode desanexar e reconectar sem ter que manter uma conexão. Eu praticamente uso em qualquer caixa que eu estou conectado porque se eu for desconectado eu não elimino o trabalho potencialmente prejudicial em seu fluxo.
apenas execute screen
para gerar uma nova sessão, execute seu comando e pressione ctrl + ae depois d (mantenha o controle pressionado para ambas as letras)
Para reconectar, execute screen -dr
na linha de comando e sua sessão de tela se anexará à sua conexão atual.