【问题标题】:how do i auto restart a crashed app that I run via "npm run start"?如何自动重启通过“npm run start”运行的崩溃应用程序?
【发布时间】:2020-03-14 21:14:23
【问题描述】:

我的 package.json 中有以下内容:

  "scripts": {
    "test": "node test.js",
    "ffmpeg": "ffmpeg -framerate 30 -i frames/test_%04d.png -y -s:v 1280x720 -c:v libx264 -profile:v high -crf 20 -pix_fmt yuv420p output.mp4",
    "deploy": "surge -p .",
    "start": "budo browser.js:bundle.js -p 80 --live -- -t babelify",
    "build": "browserify browser.js -t babelify | uglifyjs -m -c warnings=false > bundle.js"
  },

我通过“npm run start”启动我的节点应用程序,它从我的 package.json 运行这一行就好了:

"start": "budo browser.js:bundle.js -p 80 --live -- -t babelify",

但是,我想要一个进程来检测应用程序是否崩溃,并重新运行相同的命令来重新启动它。不确定解决这个问题的最佳方法...我是永远使用 npm 原生的东西,还是使用 linux 端的东西来重新启动进程?

处理这个问题的最佳方法是什么?

【问题讨论】:

标签: node.js linux high-availability


【解决方案1】:

最简单的解决方案有点难看,但似乎可行:

"start": "RC=1; while [ $RC -ne 0 ]; do budo browser.js:bundle.js -p 80 --live -- -t babelify; RC=$?; done",

也就是说,循环运行您的命令 (budo browser.js:bundle.js -p 80 --live -- -t babelify),直到它以状态码 0(成功)退出。

【讨论】:

    【解决方案2】:

    您的问题通常由流程管理器解决。 Node.js 最受欢迎的一直是PM2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-23
      • 1970-01-01
      • 2013-01-31
      • 2011-11-06
      相关资源
      最近更新 更多