我有一个nodejs服务器,它通过child_process.exec执行命令。一个这样的命令重启节点实例(以及其他一些事情)。
脚本执行如下操作:
我知道这不是最好的方法,但我的双手并列(这是软件的发布版本,我们不能在下一个版本重组之前)。
发生的事情是,当我运行命令时,它会杀死节点,然后脚本的其余部分就会死掉。
节点使用的默认shell是sh,并且无法更改。
我的选择是什么?
服务器以root用户身份运行,因此不存在任何权限问题。我想我必须以某种方式开始一个新的外壳,但我不完全确定如何做到这一点。我想成功退出当前shell,但这不是必需的,只要我可以将整个脚本与当前shell分开。
答案 0 :(得分:0)
经过多次辛劳和心碎,这就是成功的模式:
然后在剧本中:
killall node
这是解决问题的一种非常低技术的方式,当然不是最佳的,但它有效。由于使用了nohup,当父母去世时它不会死亡。这意味着所有脚本都将运行。
事实证明,我还有另一个错误,这个错误使得事情变得复杂了。