/ / Bash скриптът, който стартира Python скрипта, не спира сам - python, bash, shell, process

Bash скриптът, който стартира Python скрипта, не спира сам - python, bash, shell, process

Не съм сигурен дали това всъщност е проблемът, нонека да обясня: Имам питънски скрипт, който започва с баш скрипт. Задачата на баширащия скрипт се изпълнява след това, но когато подкарам ps aux, обаждането все още е налице.

#!/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

Ако се захваля ps aux | grep python Получавам python -u /home/user/folder/myscript.py -some Parameters като резултат. Според лог файла питънският скрипт е затворен правилно. (Кодът за завършване на скрипта е в самия скрипт.) Сценарият започва всеки час и все още виждам всички обаждания от предишните часове.

Благодаря предварително за вашата помощ, съвети или съвети!

Отговори:

2 за отговор № 1

Скриптовият скрипт баш ще остане толкова дълго, колкото се изпълнява детето (питън скрипт). Ако стартирате скрипта на Python, който работи във фонов режим (добавете & в края на линията на Python), родителят ще излезе.

#!/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 &

Ако разгледате списъка с процеси (например "ps -elf"). Тя ще покаже на детето (ако все още работи). Детето PPID (родителски PID) ще бъде 1 (root PID) вместо родителското PID, защото родителят вече не съществува.

В крайна сметка това може да е проблем, ако скриптът на Python никога не излиза. Можете да накарате родителския скрипт да изчака и да убие детето, напр. изчакайте 30 секунди и убийте дете, ако все още е налице:

#!/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