2

好吧,我基本上是想让一个 bash 脚本永远运行一个节点脚本。我制作了以下 bash 脚本:

#!/bin/bash
虽然是真的;做
        光盘 /myscope/
        取消链接 nohup.out
        节点 myscript.js
        睡觉 6
完成并回显$!> PID

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

显然,上面解释的一切都按预期工作,但我也期待当 bash 脚本的 pid 被杀死时,节点脚本将停止运行,我不知道为什么这在我看来是有道理的,但是当它到来时练习,它不起作用。bash 脚本确实被杀死了,但是节点脚本一直在运行,这让我很害怕。

我已经在终端中对其进行了测试,不将 bash 脚本发送到后台并输入 ctrl+c,这两个脚本都被杀死了。

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

4

1 回答 1

3

有很多工具可以让你做你想做的事,我脑子里只有两个:

也许第二个它不是你要找的,但仍然值得一看。

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

pkill -TERM -P $PID

$PID父PID在哪里。

于 2013-05-24T13:45:46.170 回答