0
所有人。 我写了一个bash脚本来监视cpu,内存和网络信息。一切都很好,CPU和内存部分。但是当涉及网络部分时,事情变得有趣。 我使用“ifstat”来监视网络。 “ifstat”是一个可以连续在屏幕上打印网络IO的块线程。我的bash脚本是象下面这样:! #/斌/庆典当主进程被终止时,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过程时如何自动杀死它?
该解决方案非常棒!谢谢!但还有一个问题是,为什么我杀了shell进程,它不会自动杀死ifst进程,因为ifst进程是shell进程的子进程(我认为)。 – Yoyoslx
是的,这就是为什么。 – Jasen