gpt4 book ai didi

linux - 当主进程被杀死时,bash 子进程不会被杀死

转载 作者:太空宇宙 更新时间:2023-11-04 10:59:04 24 4
gpt4 key购买 nike

大家。我写了一个bash脚本来监控cpu、内存和网络信息。 CPU 和内存部件一切正常。但是当涉及到网络部分时,事情就变得有趣了。我使用“ifstat”来监控网络。 “ifstat”是一个 block 线程,它将在屏幕上连续打印网络 IO。我的 bash 脚本如下所示: #!/bin/bash

#ignore other less important codes
......

ifstat > network.info &
while true
do
...
done

我用 bash xx.sh运行它并使用 ctrl + c 杀死它。奇怪的是,虽然这个 bash 进程已经被杀死,但 ifstat 进程仍在后台运行。我用 ps -e | grep ifstat检查出来。它一直在那里,但我手动将其杀死。

在我看来,ifstat进程是xx.sh的一个子进程,所以我希望它在我kill 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com