Терминал остается занятым после запуска сценария sh из файла python - PullRequest
1 голос
/ 14 марта 2020

У меня странная проблема. Я запускаю python программу с кодом вроде:

# file.py
some stuff
some stuff...
os.system(". ./script.sh; function_1")

и содержимым скрипта. sh:

function_1()
{
kill -2 $(pidof python file.py)
python file2.py
}

И все работает хорошо и c, но после file2 завершает свою работу, терминал остается таким же, как и в этой программе. Я должен вручную нажать Ctrl + C. Я попытался добавить в сценарий te. sh такие команды, как: kill -2 $ (pidof python file.py) или даже kill все python, но это тоже не сработало.

Конечно, когда я запускаю file2.py вручную, он выполняет свою работу и сразу после этого освобождает терминал.

После этой части скрипта:

kill -2 $(pidof python file.py)

терминал действительно освобожден, поэтому это должно быть возможно и с file2.py.

Возможно, терминал не освобожден из-за сценария, а не python на самом деле. Тем не менее я не знаю, как это преодолеть. Команда:

killall bash

полностью выходит из терминала - что не является хорошим решением.


ОБНОВЛЕНИЕ: Может быть важно: когда я просто печатаю в терминал. script.sh; function_1 запускается и завершается, как и ожидалось.

Я думаю, что проблема не связана с python, потому что я добавил

printf "test message" -> after python file2.py

, и он показывается. Но терминал все еще остается «занятым»

Еще одно обновление: когда я добавил команду в скрипт, чтобы тот же файл снова запускался

kill -2 $(pidof python file.py)
python file.py

Он запускается и сразу же показывает ошибку "Ошибка EOF "


Я что-то упустил?

...