/ / La secuencia de comandos Bash que inicia la secuencia de comandos de Python no se detiene a sí misma: python, bash, shell, process

La secuencia de comandos de Bash que inicia la secuencia de comandos de python no se detiene sola: python, bash, shell, process

No estoy seguro de si este es realmente el problema, perodéjame explicarte: tengo un script de python que se inicia con un script de bash. El trabajo del script bash se realiza entonces, pero cuando escucho el ps ps aux, la llamada aún está presente.

#!/bin/bash
export http_proxy="1.2.3.4:1234"
python -u /home/user/folder/myscript.py -some Parameters >> /folder/Logfile_stout.log 2>&1

Si grep para ps aux | grep python Obtengo el python -u /home/user/folder/myscript.py -some Parameters como resultado. De acuerdo con el archivo de registro, la secuencia de comandos de python se cerró correctamente. (El código para finalizar la secuencia de comandos está dentro de la propia secuencia de comandos). El script se inicia cada hora y todavía veo todas las llamadas de las horas anteriores.

Gracias de antemano por su ayuda, consejos o consejos!

Respuestas

2 para la respuesta № 1

La secuencia de comandos principal bash permanecerá mientras se esté ejecutando la secuencia secundaria (secuencia de comandos de Python). Si inicia la secuencia de comandos de Python ejecutándose en segundo plano (agregue & al final de la línea de python), el padre saldrá.

#!/bin/bash
export http_proxy="1.2.3.4:1234"
python -u /home/user/folder/myscript.py -some Parameters >> /folder/Logfile_stout.log 2>&1 &

Si examina la lista de procesos (por ejemplo, "ps -elf"). Se mostrará al niño (si todavía se está ejecutando). El PPID secundario (PID principal) será 1 (PID raíz) en lugar del PID principal porque el principal ya no existe.

Eventualmente podría ser un problema si su script de python nunca se cierra. Puede hacer que el script principal espere y mate al niño, por ejemplo. espere 30 segundos y mate al niño si aún está presente:

#!/bin/bash
export http_proxy="1.2.3.4:1234"
python -u /home/user/folder/myscript.py -some Parameters >> /folder/Logfile_stout.log 2>&1 &
sleep 30
jobs
kill %1
kill -9 %1
jobs