У меня странная проблема, я не могу оторвать голову. Что я могу сделать, это запустить функцию под названием fn_rundumper, который в основном только вызывает код Баш:PID фоновой задачи отличается от заданной задачи PID с использованием ps
pterm -z "cmd.sh" param1 &
Вот вывод о том, что включает в себя фон Pid «27938858»:
fn_rundumper
running fn_dumper...
[1] 27938858
fn_dumper...done
Тогда я смотрю при количестве рабочих мест, на которых выполняется это также показывает PID «27938858»:
jobs -l
[1] + 27938858 Running $(pterm -z "$SCRIPTS_DIR/run_dumper.sh" $VO
Затем я делаю команду ps
, чтобы увидеть, что pterms
работают:
ps | grep pterm
24285189 ? 00:00:00 pterm
27938859 ? 00:00:00 pterm
Это дает ПИД 27938859
. Это отличается от других!
Когда я убиваю ПИД-код 27938858
, ничего не происходит. Когда я убиваю PID 27938859
, тогда фон pterm
закрыт.
Проблема в том, что я могу запустить много разных фоновых pterms, а также некоторые pterms, которые не открываются в качестве фоновых задач (т. Е. Выполняются отдельно). Поэтому, когда я прихожу на порядок, я просто хочу закрыть pterms, которые я открыл через мой скрипт.
Я пытался использовать jobs -l
, чтобы увидеть PID, которые мне нужно закрыть, но, как я только что описал, это неправильный PID.
Может ли кто-нибудь объяснить, почему это происходит? а также что мне нужно сделать, чтобы получить правильный PID? Спасибо!
- Edit1 -
Лучшее, что я могу думать о том, чтобы сделать ps | grep pterm
до и после того, как и сравнить результаты, чтобы найти новый pterm PID ... выполнимо, но некрасиво :(
- Edit2 -
Я проверил это снова в командной строке (без функции вызова):
Сначала я сделал:
`pterm -z "$VOE_SCRIPTS_DIR/run_dumper.sh" $PROJECT_DIR` &
И затем посмотрел результаты ps/$!
и получил то же поведение.
Тогда я сделал:
pterm -z "$VOE_SCRIPTS_DIR/run_dumper.sh" $VOE_PROJECT_DIR &
т.е. удалены обратные тиков, теперь PIDs весь матч вверх! Я думаю, что я могу удалить back-ticks из своего кода, но я не совсем понимаю, что это такое!
«Ничего не случилось», вероятно, означает, что вы убили чужой «pterm». – tripleee