0

child_process.execを介してコマンドを実行するnodejsサーバーがあります。そのようなコマンドの1つは、ノードインスタンス(および他のいくつかのこと)を再起動します。

スクリプトは次のようになります。

  • ノードを強制終了します
  • キルプログラムノードは使用します
  • ログをクリアする
  • プログラムの再起動ノードは使用します
  • ノードを再起動します

これが最善の方法ではないことはわかっていますが、私の手は結ばれています(これはソフトウェアのリリース版であり、次のリリースまで再構築できません)。

何が起こっているのかというと、コマンドを実行すると、ノードが強制終了され、スクリプトの残りの部分が停止します。

ノードが使用しているデフォルトのシェルはshであり、変更できません。

私のオプションは何ですか?

サーバーはrootとして実行されているため、権限の問題は発生しません。どういうわけか新しいシェルを開始する必要があると思いますが、それを行う方法が完全にはわかりません。現在のシェルを正常に終了したいのですが、スクリプト全体を現在のシェルから分離できる限り、それは必須ではありません。

4

1 に答える 1

0

多くの苦労と失恋の後、これは成功したもののパターンです:

  • エコースクリプト>/dev / shm / filename
  • chmod + x / dev / shm / filename
  • nohup / dev / shm / filename

次に、スクリプトで:

killall node

これは問題を解決するためのかなりローテクな方法であり、もちろん最適ではありませんが、機能します。nohupを使用したので、親が死んでも死ぬことはありません。これは、すべてのスクリプトが実行されることを意味します。

また、複雑な問題が発生したことも判明しましたが、その後修正されました。

于 2011-08-26T18:54:12.107 に答える