从当前shell分离命令

时间:2011-08-26 18:02:42

标签: node.js exec child-process

我有一个nodejs服务器,它通过child_process.exec执行命令。一个这样的命令重启节点实例(以及其他一些事情)。

脚本执行如下操作:

  • kill node
  • kill programs node使用
  • 清除日志
  • 重启程序节点使用
  • 重新启动节点

我知道这不是最好的方法,但我的双手并列(这是软件的发布版本,我们不能在下一个版本重组之前)。

发生的事情是,当我运行命令时,它会杀死节点,然后脚本的其余部分就会死掉。

节点使用的默认shell是sh,并且无法更改。

我的选择是什么?

服务器以root用户身份运行,因此不存在任何权限问题。我想我必须以某种方式开始一个新的外壳,但我不完全确定如何做到这一点。我想成功退出当前shell,但这不是必需的,只要我可以将整个脚本与当前shell分开。

1 个答案:

答案 0 :(得分:0)

经过多次辛劳和心碎,这就是成功的模式:

  • echo脚本>的/ dev / SHM /文件名
  • chmod + x / dev / shm / filename
  • nohup / dev / shm / filename

然后在剧本中:

killall node

这是解决问题的一种非常低技术的方式,当然不是最佳的,但它有效。由于使用了nohup,当父母去世时它不会死亡。这意味着所有脚本都将运行。

事实证明,我还有另一个错误,这个错误使得事情变得复杂了。