我正在使用PM2
来保持我的node.js应用运行。
有没有办法让PM2
每1小时重启我的应用程序?
答案 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)
})