所有人。
我已经编写了一个bash脚本来监视cpu、内存和网络信息。cpu和内存部件一切正常。但说到网络部分,事情就变得有趣了。
我用“ifstat”来监视网络ifstat”是一个块线程,它将在屏幕上连续打印网络IO。我的bash脚本如下:
#!/垃圾桶/垃圾桶
#ignore other less important codes
......
ifstat > network.info &
while true
do
...
done
我用
猛击xx.sh
运行它并使用ctrl+c来终止它。奇怪的是,虽然这个bash进程已经被终止,但是ifstat进程仍然在后台运行。我用
ps-e | grep ifstat公司
去看看。它总是在那里,除非我手动杀了它。
在我看来,ifstat进程是xx.sh的一个子进程,所以我希望它在我杀死xx.sh时被杀死,但显然不是!!!
有人能告诉我为什么吗?
如何在我杀死xx.sh进程时自动杀死它?
最佳答案
陷阱终止并推进杀戮。
#ignore other less important codes
ifstat > network.info &
IFSTAT_PID=$!
trap "kill $IFSTAT_PID $$" TERM INT HUP 0
while true
do
...
done
关于linux - 当主进程被杀死时,bash子进程不会被杀死,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27653650/