Una prueba de script de monitoreo1.py escrita en Python se ejecuta todo el tiempo en un verdadero. Cuando SSH es remoto (usando el terminal de masilla), inicia el script con el siguiente comando:
La copia del código es la siguiente:
Python test1.py &
Ahora el script se está ejecutando normalmente y puede ver el número de proceso a través de PS. En este momento, cierre directamente el terminal SSH (no usa el comando de salida, pero lo ejecuta directamente a través del botón de cierre de la masilla). Después de iniciar sesión nuevamente, encuentra que el proceso ha salido.
El problema se ha resuelto a través del método de inicio de fondo. Aquí hay un resumen, que es conveniente para mí verlo en el futuro.
Ejecutando en segundo plano bajo Linux
Implementado a través de la bifurcación
En el entorno de Linux, el proceso de demonio en C se implementa a través de la horquilla, y Python también se puede implementar a través de este método. El código de ejemplo es el siguiente:
La copia del código es la siguiente:
#!/usr/bin/env python
Tiempo de importación, plataforma
importar sistema operativo
Def Funzionedemo ():
# Este es un ejemplo específico de la función comercial
fout = open ('/tmp/demone.log', 'w')
Mientras que es cierto:
fout.write (time.ctime ()+'/n')
fout.flush ()
tiempo. Duerme (2)
fout.close ()
Def creatingaemon ()::
#Proceso de Fork
intentar:
Si OS.Fork ()> 0: OS._EXIT (0)
Excepto Oserror, error:
Imprima 'Fake #1 falló: %d ( %s)' %(error.errno, error.strerror)
OS._EXIT (1)
OS.Chdir ('/')
OS.Setsid ()
OS.UMASK (0)
intentar:
Pid = OS.Fork ()
Si PID> 0:
Imprima 'Daemon Pid % D' % PID
OS._EXIT (0)
Excepto Oserror, error:
Imprima 'FORK #2 Falló: %d ( %s)' %(error.errno, error.strerror)
OS._EXIT (1)
# Redirection Standard IO
sys.stdout.flush ()
sys.stderr.flush ()
si = file ("/dev/null", 'r')
so = file ("/dev/null", 'a+')
se = file ("/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 ())
# Ejecutar código en el proceso infantil
Funzionedemo () # función de función
Si __name__ == '__main__':
if plataforma.system () == "Linux":
createAmon ()
demás:
OS._EXIT (0)
Implementado a través de Upstart
La aplicación se puede encapsular en los servicios del sistema a través de Upeste, y el ejemplo completo se registra directamente aquí.
1. Escribe guiones de Python
La copia del código es la siguiente:
[root@local t27]# test123.py
#!/usr/bin/env python
Importar sistema operativo, tiempo
Mientras que es cierto:
Imprimir tiempo.time ()
tiempo. Duerme (1)
2. Escribir el archivo de configuración de UNPSTAT
La copia del código es la siguiente:
[root@local t27]# cat /etc/init/miketest.conf
Descripción "Mi prueba"
Autor "[email protected]"
Comience en RunLevel [234]
Detente en RunLevel [0156]
Chdir /Test /T27
exec /test/t27/test123.py
reaparición
3. Recargar el estado
La copia del código es la siguiente:
InitCTL Recargar Configuración
4. Comience el servicio
La copia del código es la siguiente:
[root@local t27]# comienza miketest
Miketest Start/Running, Proceso 6635
[root@local t27]# ps aux | test123.py
Root 6635 0.0 0.0 22448 3716? SS 09:55 0:00 Python /test/t27/test123.py
Root 6677 0.0 0.0 103212 752 pts/1 S+ 09:56 0:00 Test GreP123.py
5. Servicio de detención
La copia del código es la siguiente:
[root@local t27]# detener miketest
Miketest se detiene/espera
[root@local t27]# ps aux | test123.py
Root 6696 0.0 0.0 103212 752 pts/1 S+ 09:56 0:00 Test Grep133.py
[root@local t27]#
Implementado a través del script bash
1. Código de Python
La copia del código es la siguiente:
[root@test local]# test123.py
#!/usr/bin/env python
Importar sistema operativo, tiempo
Mientras que es cierto:
Imprimir tiempo.time ()
tiempo. Duerme (1)
2. Escribe un script de inicio
La copia del código es la siguiente:
[Root@Test Local]# Cat Start.Sh
#! /bin/sh
Python test123.py &
3. Comience el proceso
La copia del código es la siguiente:
[root@test local]#./start.sh
Si usa e inicia el proceso directamente:
La copia del código es la siguiente:
Python test123.py &
Cierre el terminal SSH directamente hará que el proceso salga.
Implementado a través de la pantalla, TMUX y otros métodos
Si ejecuta el programa temporalmente, puede iniciar el programa a través de la pantalla o TMUX. Aquí hay una descripción de cómo comienza TMUX.
1. Comienza Tmux
Ingrese TMUX en la terminal para comenzar
2. Comience el programa en TMUX
Simplemente ejecute el siguiente comando directamente (consulte el script anterior): Python test123.py
3. Apague directamente el terminal SSH (como el botón Cerrar en la masilla);
4. Después de volver a reiniciar, ejecute el siguiente comando:
La copia del código es la siguiente:
Tmux adjunto
Ahora puede ver que el programa Python todavía se está ejecutando normalmente.
Ejecutar en segundo plano en Windows
No lo he estudiado en profundidad en Windows. El método que uso a menudo es modificar la extensión del script Python a ".pyw", y hacer doble clic para ejecutarse en segundo plano sin modificar ningún código.