Я запускаю сценарий bash в качестве фонового задания. Сценарий bash вызывает исполняемый файл, требующий много времени. Если я не ошибаюсь, запуск сценария bash является родительским процессом, а запуск исполняемого файла - дочерним процессом.
(1) когда я смотрю на вывод top, он показывает только дочерний процесс, который запускает исполняемый файл, но не показывает родительский процесс, который запускает скрипт. Просто интересно, почему бы не показать оба? А как показать оба?
(2) Теперь я хочу остановить все выполнение, убив родительский процесс, который является фоновым заданием.
kill -9 $(jobs -p)
Терминал показывает, что выполнение сценария bash прекращено. Но запуск исполняемого файла все еще зависает на выходе top. Мне просто интересно, как убить и родительский, и дочерний процесс?
Спасибо и привет!
Процесс bash должен по-прежнему отображаться в списке процессов, за исключением того, что, поскольку он обычно ничего не делает в этой ситуации, он, вероятно, будет в самом низу «верхнего» списка. Попробуйте ps или еще лучше pstree, чтобы проанализировать вашу ситуацию.
Используйте отрицательный PID, чтобы убить группу процессов. Попытайся избежать -9
без крайней необходимости.