如何在特定时间后强制pm2重启?

时间:2016-06-27 19:33:46

标签: node.js pm2

我正在使用PM2来保持我的node.js应用运行。

有没有办法让PM2每1小时重启我的应用程序?

3 个答案:

答案 0 :(得分:3)

将以下代码放在 pm2.js 中,然后以pm2 start pm2.js

开头
    var pm2 = require('pm2');

  pm2.connect(function(err) {
    if (err) throw err;

  setTimeout(function worker() {
    console.log("Restarting app...");
    pm2.restart('app', function() {});
    setTimeout(worker, 1000);
    }, 1000);
  });

有关此内容的更多信息,请here

其他资源:

答案 1 :(得分:1)

使用crontab。
将此附加到您的crontab文件(以crontab -e运行)下:

0 * * * * pm2 restart yourappname

请注意,如果您不想增加pm2重新启动计数器,则可以执行以下操作:

0 * * * * pm2 stop yourappname && pm2 start yourappname

说明:

0:每小时的第0分钟
*:每小时
*:每天
*:每月
*:一周的每一天

答案 2 :(得分:0)

这就是我的做法。然后:pm2 start name_of_your_file.js

就我而言,它将在15分钟后退出脚本。

/**************************************************************************
 * IMPORTS
 ***************************************************************************/

// NPM
const consola = require('consola')
const pm2 = require('pm2')

/**************************************************************************
 * START PM2 PROGRAMATICALLY
 ***************************************************************************/

pm2.connect((error) => {
  if (error) {
    console.error(error)
    process.exit(2)
  }

  pm2.start({ script: 'brain/domains.js' }, (error, apps) => {
    pm2.disconnect() // Disconnects from PM2

    if (error) {
      console.error(error)
      process.exit(2)
    }
  })

  // Kill the process if taking longer than expected
  setInterval(() => {
    pm2.describe('domains', (error, scripts) => {
      const exitTimeout = 15
      const uptime = Date.now() - scripts[0].pm2_env.pm_uptime

      if (uptime > exitTimeout * 60 * 1000) {
        consola.info(`Closing cluster after ${exitTimeout} minutes...`)

        pm2.restart('domains', (error) => {
          if (error) {
            console.error(error)
            process.exit(2)
          }
        })
      }
    })
  }, 30 * 1000)
})