Um script de monitoramento test1.py escrito em python funciona o tempo todo, enquanto é verdadeiro. Quando o SSH é remoto (usando o terminal Putty), ele inicia o script com o seguinte comando:
A cópia do código é a seguinte:
python test1.py &
Agora, o script está em execução normalmente e você pode ver o número do processo através do PS. Neste momento, você fecha diretamente o terminal SSH (não usando o comando de saída, mas o executa diretamente através do botão Fechar da massa). Depois de fazer login novamente, você descobre que o processo saiu.
O problema foi resolvido através do método de inicialização em segundo plano. Aqui está um resumo, o que é conveniente para eu verificar no futuro.
Executando em segundo plano em Linux
Implementado através do garfo
No ambiente Linux, o processo Daemon em C é implementado através do garfo e o Python também pode ser implementado através desse método. O código de exemplo é o seguinte:
A cópia do código é a seguinte:
#!/usr/bin/Env Python
Tempo de importação, plataforma
OS de importação
def funzionedemo ():
# Este é um exemplo de função comercial específica
fout = aberto ('/tmp/demone.log', 'w')
Enquanto é verdade:
fout.write (time.ctime ()+'/n')
fout.flush ()
time.sleep (2)
fout.close ()
def createaemon ():
#Processo de Fork
tentar:
Se os.fork ()> 0: os._exit (0)
Exceto OSerror, erro:
Imprima 'Fork #1 falhou: %d ( %s)' %(error.errno, error.sterror)
OS._EXIT (1)
os.chdir ('/')
OS.SetSid ()
OS.UMASK (0)
tentar:
pid = os.fork ()
Se pid> 0:
imprimir 'daemon pid % d' % pid
OS._EXIT (0)
Exceto OSerror, erro:
Imprima 'Fork #2 falhou: %d ( %s)' %(error.errno, error.sterror)
OS._EXIT (1)
# Padrão de redirecionamento io
sys.stdout.flush ()
sys.stderr.flush ()
Si = arquivo ("/dev/null", 'r')
então = arquivo ("/dev/null", 'a+')
SE = arquivo ("/dev/null", 'a+', 0)
OS.DUP2 (SI.FILENO (), SYS.STDIN.FILENO ())
OS.DUP2 (SO.FILENO (), SYS.STDOUT.FILENO ())
OS.DUP2 (SE.FILENO (), SYS.STDERR.FILENO ())
# Execute o código no processo infantil
Funzionedemo () # Função Demo
se __name__ == '__main__':
se plataform.system () == "linux":
CreateDaemon ()
outro:
OS._EXIT (0)
Implementado através do Upstart
O aplicativo pode ser encapsulado nos serviços do sistema através do Upstart, e o exemplo completo é registrado aqui diretamente.
1. Escreva scripts em python
A cópia do código é a seguinte:
[root@local T27]# CAT Test123.py
#!/usr/bin/Env Python
Importar sistema operacional, tempo
Enquanto é verdade:
time de impressão.Time ()
time.sleep (1)
2. Escreva o arquivo de configuração Upstat
A cópia do código é a seguinte:
[root@local T27]# cat /etc/init/miketest.conf
Descrição "meu teste"
autor "[email protected]"
Comece no Runlevel [234]
Pare no Runlevel [0156]
chdir /teste /t27
exec /test/t27/test123.py
reaparente
3. Recarregue o norte do estado
A cópia do código é a seguinte:
Initctl Reload-Configuração
4. Inicie o serviço
A cópia do código é a seguinte:
[root@local T27]# Start MikEtest
MikeTest Start/Running, Processo 6635
[root@local T27]# PS AUX | Grep test123.py
Raiz 6635 0,0 0,0 22448 3716? Ss 09:55 0:00 python /test/t27/test123.py
Raiz 6677 0,0 0,0 103212 752 pts/1 s+ 09:56 0:00 Grep test123.py
5. Stop Service
A cópia do código é a seguinte:
[root@local T27]# Stop mikeTest
MikeTest Stop/Waiting
[root@local T27]# PS AUX | Grep test123.py
Raiz 6696 0,0 0,0 103212 752 pts/1 s+ 09:56 0:00 Grep test123.py
[root@local T27]#
Implementado através do script Bash
1. Código Python
A cópia do código é a seguinte:
[raiz@teste local]# CAT Test123.py
#!/usr/bin/Env Python
Importar sistema operacional, tempo
Enquanto é verdade:
time de impressão.Time ()
time.sleep (1)
2. Escreva um script de inicialização
A cópia do código é a seguinte:
[raiz@teste local]# gato start.sh
#! /bin/sh
Python test123.py &
3. Inicie o processo
A cópia do código é a seguinte:
[raiz@testes local]#./start.sh
Se você usar e iniciar o processo diretamente:
A cópia do código é a seguinte:
Python test123.py &
Fechar diretamente o terminal SSH fará com que o processo saia.
Implementado através da tela, tmux e outros métodos
Se você executar o programa temporariamente, poderá iniciar o programa através da tela ou TMUX. Aqui está uma descrição de como o TMUX começa.
1. Inicie o tmux
Digite o tmux no terminal para iniciar
2. Inicie o programa em tmux
Basta executar o seguinte comando (consulte o script acima): python test123.py
3. Desligue diretamente o terminal SSH (como o botão de fechar em massa);
4. Após o Resshing, execute o seguinte comando:
A cópia do código é a seguinte:
TMUX Anexar
Agora você pode ver que o programa Python ainda está executando normalmente.
Execute em segundo plano em Windows
Eu não estudei em profundidade no Windows. O método que costumo usar é modificar a extensão do script python para ".pyw" e clique duas vezes para ser executado em segundo plano sem modificar nenhum código.