#!/usr/bin/env node var pm2 = require( 'pm2' ); var jsonFile = '/home/www/lua/config.json'; var seeks = require( jsonFile ); var fs = require( 'fs' ); var path = require( 'path' ); var async = require( 'async' ); var shell = require( 'executive' ); var lives = []; Object.assign = require('object-assign'); pm2.connect( function( err ) { if ( err ) { console.error( err ); pm2.disconnect(); process.exit( 2 ); } pm2.list( function( err, processDescriptionList ) { if ( err ) { console.error( err ); pm2.disconnect(); process.exit( 2 ); } // processDescriptionList.forEach(function(pd){ // }); // console.log(processDescriptionList); async.mapSeries( processDescriptionList, function( pd , callback) { var stemp = new Date().getTime(); var live = stemp - pd.pm2_env.pm_uptime; if ( ( live / 1000 / 60 / 60 ) > 24 ) { console.log( pd.name + " lives : " + ( live / 1000 / 60 / 60 ) ); shell.interactive( "pm2 delete " + pd.name, function( err ) { callback( null ); }); } else { callback( null, pd.name ); } }, function( err, names ) { // console.log(names); lives = names; } ); // console.log(lives); for ( var seek in seeks ) { var islive = false; lives.forEach( function( name ) { if ( seek == name ) { islive = true; } } ); if ( !islive ) { delete seeks[ seek ]; } } // console.log( seeks ); fs.writeFile( jsonFile, JSON.stringify( seeks ), function( err ) { if ( err ) console.log( err ); } ); pm2.disconnect(); } ); } );