mirror of
https://github.com/Unitech/pm2.git
synced 2025-12-08 20:35:53 +00:00
148 lines
4.1 KiB
JavaScript
148 lines
4.1 KiB
JavaScript
|
|
|
|
var cluster = require('cluster');
|
|
var path = require('path');
|
|
var async = require('async');
|
|
var os = require('os');
|
|
var p = path;
|
|
var cst = require('../../constants.js');
|
|
var pkg = require('../../package.json');
|
|
var pidusage = require('pidusage');
|
|
var Common = require('../Common');
|
|
var util = require('util');
|
|
|
|
var debug = require('debug')('pm2:deprecated');
|
|
|
|
module.exports = function(God) {
|
|
|
|
/**
|
|
* Delete a process by name
|
|
* It will stop it and remove it from the database
|
|
* @method deleteProcessName
|
|
* @param {} name
|
|
* @param {} cb
|
|
* @return
|
|
*/
|
|
God.deleteProcessName = function(name, cb) {
|
|
var processes = God.findByName(name);
|
|
|
|
if (processes && processes.length === 0)
|
|
return cb(God.logAndGenerateError('Unknown process name'), {});
|
|
|
|
async.eachLimit(processes, cst.CONCURRENT_ACTIONS, function(proc, next) {
|
|
God.stopProcessId(proc.pm2_env.pm_id, function() {
|
|
// Slow object
|
|
delete God.clusters_db[proc.pm2_env.pm_id];
|
|
return next();
|
|
});
|
|
return false;
|
|
}, function(err) {
|
|
if (err) return cb(God.logAndGenerateError(err), {});
|
|
return cb(null, God.getFormatedProcesses());
|
|
});
|
|
};
|
|
|
|
/**
|
|
* Delete all processes
|
|
* It will stop them and remove them from the database
|
|
* @method deleteAll
|
|
* @param {} opts
|
|
* @param {} cb
|
|
* @return
|
|
*/
|
|
God.deleteAll = function(opts, cb) {
|
|
var processes = God.getFormatedProcesses();
|
|
|
|
if (processes && processes.length === 0)
|
|
return cb(God.logAndGenerateError('No processes launched'), {});
|
|
|
|
debug('Deleting all processes');
|
|
async.eachLimit(processes, cst.CONCURRENT_ACTIONS, function(proc, next) {
|
|
debug('Deleting process %s', proc.pm2_env.pm_id);
|
|
God.deleteProcessId(proc.pm2_env.pm_id, function() {
|
|
return next();
|
|
});
|
|
return false;
|
|
}, function(err) {
|
|
if (err) return cb(God.logAndGenerateError(err), {});
|
|
|
|
God.clusters_db = null;
|
|
God.clusters_db = {};
|
|
return cb(null, []);
|
|
});
|
|
};
|
|
|
|
|
|
/**
|
|
* Description
|
|
* @method stopAll
|
|
* @param {} env
|
|
* @param {} cb
|
|
* @return
|
|
*/
|
|
God.stopAll = function(env, cb) {
|
|
var processes = God.getFormatedProcesses();
|
|
|
|
if (processes && processes.length === 0) {
|
|
return cb(God.logAndGenerateError('No process launched'), {});
|
|
}
|
|
|
|
async.eachLimit(processes, cst.CONCURRENT_ACTIONS, function(proc, next) {
|
|
if (proc.state == cst.STOPPED_STATUS ||
|
|
proc.state == cst.STOPPING_STATUS) return next();
|
|
return God.stopProcessId(proc.pm2_env.pm_id, next);
|
|
}, function(err) {
|
|
if (err) return cb(new Error(err));
|
|
return cb(null, processes);
|
|
});
|
|
};
|
|
|
|
|
|
/**
|
|
* Restart all process by name
|
|
* @method restartProcessName
|
|
* @param {} name
|
|
* @param {} cb
|
|
* @return Literal
|
|
*/
|
|
God.restartProcessName = function(name, cb) {
|
|
var processes = God.findByName(name);
|
|
|
|
if (processes && processes.length === 0)
|
|
return cb(God.logAndGenerateError('Unknown process'), {});
|
|
|
|
async.eachLimit(processes, cst.CONCURRENT_ACTIONS, function(proc, next) {
|
|
if (proc.pm2_env.status == cst.ONLINE_STATUS)
|
|
return God.restartProcessId({id:proc.pm2_env.pm_id}, next);
|
|
else
|
|
return God.startProcessId(proc.pm2_env.pm_id, next);
|
|
}, function(err) {
|
|
if (err) return cb(God.logAndGenerateError(err));
|
|
return cb(null, God.getFormatedProcesses());
|
|
});
|
|
|
|
return false;
|
|
};
|
|
|
|
/**
|
|
* Stop all process by name
|
|
* @method stopProcessName
|
|
* @param {} name
|
|
* @param {} cb
|
|
* @return
|
|
*/
|
|
God.stopProcessName = function(name, cb) {
|
|
var processes = God.findByName(name);
|
|
|
|
if (processes && processes.length === 0)
|
|
return cb(God.logAndGenerateError('Unknown process name'), {});
|
|
|
|
async.eachLimit(processes, cst.CONCURRENT_ACTIONS, function(proc, next) {
|
|
return God.stopProcessId(proc.pm2_env.pm_id, next);
|
|
}, function(err) {
|
|
if (err) return cb(God.logAndGenerateError(err));
|
|
return cb(null, God.getFormatedProcesses());
|
|
});
|
|
};
|
|
};
|