我有一個調度腳本(dispatcher.sh)啓動的進程:如何控制這樣通過在Unix /調度員的Linux
for system in a b c
do
cd /usr/xyz/$system/
mkdir -p /usr/xyz/$system/time
{ time `./run_program.sh;wait` ;} > /usr/xyz/$system/time/time.log 2>&1 &
done
我寫這篇推出在每個文件夾和記錄run_program.sh執行時間。每個run_program.sh中的任務各不相同,有些會分叉子進程和孫進程。
我希望能夠停止/殺死每個run_program.sh及其衍生的子進程和孫子進程。
我也想知道每個run_program的子進程和孫進程正在運行。有什麼辦法可以檢查叉子樹嗎?
編輯:
我沒有我的系統上pstree,所以我很難對直觀地理解父進程和後代的過程之間的關係PID。如果我殺了父進程,後代進程會被殺死嗎?我目前使用
ps -eo pid,pgid,args | awk '{if($2==PGID){print $1}}' PGID=pid| xargs kill -9
殺死一個父進程的後代進程。假設A叉B和B叉C(A-> B-> C),並且我殺死了B進程,C會自動被殺死嗎?我怎樣才能殺死包括A和B的進程?
使用'pstree'來查看進程樹,'-p'選項將顯示所有的PID。然後你可以用'kill'殺死他們。 –
Barmar