在项目中用到了定时执行shell命令的功能:
// runShell.js
const process = require('child_process');
require('colors');
module.exports = (sh, log = '', callback) => {
log !== '' ? console.log(`[Shell Log]`.green, log) : null;
console.log(`[ SH ]`.cyan,sh.cyan);
process.exec(sh, (err,sto) => {
if (err) {
console.log(`[Shell Error]`.red, err);
return
}
log !== '' ? console.log(`[Shell Log]`.green, log, 'success') : null;
console.log(sto);
callback()
})
}
// shell.js
const async = require('async');
const moment = require('moment');
const run = require('./run');
require('colors');
async.waterfall([
(next) => {
console.log('######## Export Users #########');
console.log('Start Time:', moment().format('YYYY-MM-DD HH:mm:ss'))
next();
},
(next) => {
run('mongoimport -h 127.0.0.1:27017 -d xxx -c users --file /var/www/xxx.json --upsert', '导出文件', next);
},
], (err) => {
console.log('End Time:', moment().format('YYYY-MM-DD HH:mm:ss'))
if (err) {
console.log(`[ExportUsers Shell Error]`.red, err);
}
})
网友评论