【发布时间】:2011-08-26 18:02:42
【问题描述】:
我有一个通过 child_process.exec 执行命令的 nodejs 服务器。一个这样的命令会重新启动节点实例(以及其他一些事情)。
脚本执行如下操作:
- 杀死节点
- 杀死程序节点使用
- 清除日志
- 重启程序节点使用
- 重启节点
我知道这不是最好的方法,但我的手被束缚了(这是一个已发布的软件版本,我们无法在下一个版本之前进行重组)。
发生的情况是,当我运行命令时,它会杀死节点,然后脚本的其余部分就会死掉。
node 使用的默认 shell 是 sh,不能更改。
我有哪些选择?
服务器以root身份运行,所以不会有任何权限问题。我想我必须以某种方式启动一个新的外壳,但我不完全确定如何做到这一点。我想成功退出当前的 shell,但这不是必需的,只要我能将整个脚本与当前的 shell 分开即可。
【问题讨论】:
-
阅读 nohup 的手册页,它用于从当前 shell 中分离命令。
-
@tawman - 没有爱。它不允许当前 shell 结束。我在脚本中设置了 5 秒超时,即使我使用 nohup 调用它,我仍然有 5 秒超时。
-
您可能需要考虑输入、输出和标准错误的文件句柄。维基百科页面有一些很好的例子:en.wikipedia.org/wiki/Nohup
-
我想我可以在脚本中尝试
kill -9ing shell。 -
试过
kill -9和kill -15,还是没有爱。我知道进程ID是正确的。killall node虽然有效。有没有办法干净利落地退出?
标签: node.js exec child-process