diff --git a/lib/API/UX/pm2-describe.js b/lib/API/UX/pm2-describe.js index 3c3c5b68e..9b473ea14 100644 --- a/lib/API/UX/pm2-describe.js +++ b/lib/API/UX/pm2-describe.js @@ -79,6 +79,9 @@ module.exports = function(proc) { } if ('cron_restart' in pm2_env){ + if ('cron_timezone' in pm2_env){ + table.splice(5, 0, {'cron timezone': pm2_env.cron_timezone}) + } table.splice(5, 0, {'cron restart': pm2_env.cron_restart}) } diff --git a/lib/API/schema.json b/lib/API/schema.json index 7debd78d0..7a27b0842 100644 --- a/lib/API/schema.json +++ b/lib/API/schema.json @@ -175,6 +175,10 @@ "alias": "cron", "docDescription": "A cron pattern to restart your app" }, + "cron_timezone": { + "type": "string", + "docDescription": "Timezone in Europe/Stockholm format" + }, "merge_logs": { "type": "boolean", "alias" : "combine_logs", diff --git a/lib/Common.js b/lib/Common.js index 3123252e5..e20a52873 100644 --- a/lib/Common.js +++ b/lib/Common.js @@ -352,8 +352,15 @@ Common.sink.determineCron = function(app) { const Croner = require('croner'); try { - Common.printOut(cst.PREFIX_MSG + 'cron restart at ' + app.cron_restart); - Croner(app.cron_restart); + Common.printOut(cst.PREFIX_MSG + 'cron restart at ' + app.cron_restart + " in " + + (app.cron_timezone ? app.cron_timezone : "default timezone")); + + let croner_options; + if (app.cron_timezone) { + croner_options = { timezone: app.cron_timezone }; + } + + Croner(app.cron_restart, croner_options); } catch(ex) { return new Error(`Cron pattern error: ${ex.message}`); } diff --git a/lib/Worker.js b/lib/Worker.js index 265fc6892..90a29be7d 100644 --- a/lib/Worker.js +++ b/lib/Worker.js @@ -35,7 +35,12 @@ module.exports = function(God) { var pm_id = pm2_env.pm_id console.log('[PM2][WORKER] Registering a cron job on:', pm_id); - var job = Cron(pm2_env.cron_restart, function() { + let croner_options; + if (pm2_env.cron_timezone) { + croner_options = { timezone: pm2_env.cron_timezone }; + } + + var job = Cron(pm2_env.cron_restart, croner_options, function() { God.restartProcessId({id: pm_id}, function(err, data) { if (err) console.error(err.stack || err);