GNU/Linux >> Tutoriales Linux >  >> Linux

El script Nohup para Python no funciona cuando se ejecuta en segundo plano con &

Necesita vaciar stdout después de imprimir:sys.stdout.flush(); de lo contrario, llevará un tiempo llenar el búfer de salida estándar.


Pase a python el indicador -u para quitar el búfer de stdout

nohup python -u test.py &

Python almacenará en búfer stdout de lo contrario. Esto no requiere un cambio de código.

Desde la página del manual:

       -u     Force  stdin,  stdout and stderr to be totally unbuffered.  On systems where it matters, also put stdin, stdout
          and stderr in binary mode.  Note that there is internal buffering in xreadlines(), readlines() and  file-object
          iterators ("for line in sys.stdin") which is not influenced by this option.  To work around this, you will want
          to use "sys.stdin.readline()" inside a "while 1:" loop.

Acabo de tener un problema similar. Mi guión funcionó bien sin nohup. Con nohup, el script fallaría con un SyntaxError.

El problema era el contexto de ejecución de nohup que usaría un alias de python asignado a python2 en lugar de python3 .

Se corrigió especificando python3 en lugar de python .


Linux
  1. Ejecutar secuencia de comandos con ". ¿Y con “fuente”?

  2. ¿La forma "adecuada" de probar si un servicio se está ejecutando en un script?

  3. ¿Problemas con el teclado que no funciona cuando se inicia?

  4. nohup:comando no encontrado

  5. ¿Cómo puede un script bash saber el directorio en el que está instalado cuando se obtiene con . ¿operador?

El tutorial del comando fc con ejemplos para principiantes

Trabajar con el kernel en tiempo real para Red Hat Enterprise Linux

Pyzo:el editor interactivo para Scientific Python

¿Depuración en pyCharm con privilegios de sudo?

Cómo matar el script de python con el script bash

Haga que el script de Python combinado con paquetes de Linux sea fácil de instalar para el usuario final