gpt4 book ai didi

linux - 后台 Bash 脚本 : how to kill child processes

转载 作者:搜寻专家 更新时间:2023-11-01 00:46:00 24 4
gpt4 key购买 nike

好吧,我基本上是在尝试让 bash 脚本永远运行 Node 脚本。我制作了以下 bash 脚本:

#!/bin/bashwhile true ; do        cd /myscope/        unlink nohup.out        node myscript.js        sleep 6done & echo $! > pid

我期望它在运行时使用给定脚本启动 Node ,检查 Node 是否退出,如果退出则休眠 6 秒并重新打开 Node 。此外,我希望它在后台运行并将它的 pid(bash pid)写入名为“pid”的文件。

显然,上面解释的一切都按预期工作,但我也期望当 bash 脚本的 pid 被终止时, Node 脚本将停止运行,我不知道为什么这在我的脑海中有意义,但是到了修炼的时候,就不行了。 bash 脚本确实被杀死了,但 Node 脚本仍在运行,这让我很害怕。

我已经在终端中测试了它,通过不将 bash 脚本发送到后台并输入 ctrl+c,两个脚本都会被杀死。

我显然不了解后台进程的工作方式。看在上帝的份上,有人可以帮助我吗?

最佳答案

有很多工具可以让你做你想做的事,我想不到的只有两个:

也许第二个不是您要找的东西,但仍然值得一看。

如果您不能或不想使用它们,那么问题是,如果您杀死父进程,子进程仍然存在,那么,您也应该杀死它:

pkill -TERM -P $PID

其中 $PID 是父 PID。

关于linux - 后台 Bash 脚本 : how to kill child processes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16736267/

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