script run ignoring detached appending and python nohup

run - python background process



Nohup no está escribiendo log en el archivo de salida (6)

Estoy usando el siguiente comando para ejecutar una secuencia de comandos python en segundo plano:

nohup ./cmd.py > cmd.log &

Pero parece que nohup no está escribiendo nada en el archivo de registro. Se crea cmd.log pero siempre está vacío. En el script de python, estoy usando sys.stdout.write lugar de print para imprimir a la salida estándar. ¿Estoy haciendo algo mal?


Parece que necesita eliminar el estándar de forma periódica (por ejemplo, sys.stdout.flush() ). En mi prueba, Python no hace esto automáticamente incluso con la print hasta que el programa finaliza.


Puede ejecutar Python con el -u para evitar el almacenamiento en búfer de salida:

nohup python -u ./cmd.py > cmd.log &


Python 3.3 y superior tiene un argumento de descarga para imprimir y este es el único método que funcionó para mí.

print("number to train = " + str(num_train), flush=True) print("Using {} evaluation batches".format(num_evals), flush=True)


Tuve un problema similar, pero no relacionado con un proceso de Python. Estaba ejecutando un script que hizo un nohup y el script se ejecutó periódicamente a través de cron.

Pude resolver el problema de la siguiente manera:

  1. redireccionando el stdin, stdout y stderr
  2. asegurándose de que la secuencia de comandos que se invoca a través de nohup no ejecutaba nada más en el fondo

PD: mis guiones fueron escritos en ksh corriendo en RHEL


Usar '' -u '' con '' nohup '' funcionó para mí. Todo se guardará en el archivo " nohup.out ". Me gusta esto-

nohup python -u code.py &