我需要使用SSH重新启动app.js并尝试以下代码:
/* APP - restart */
conn = new client()
/* SSH - connection */
conn.on('ready', function() {
/* SSH - restart */
conn.exec('killall -2 node && node --expose-gc /root/myfolderaps/app.js', function(err, stream) {
/* SSH - restart error */
if (err) return callback('Restart <b>'+results[Object.keys(results)][2]+'</b> Failed!');
/* SSH - close */
conn.end();
/* APP - restarted */
res.json({'status': 'true', 'message': 'Restarting <b>'+results[Object.keys(results)][2]+'</b> Success!'});
})
}).on('error', function(err) {
/* SSH - connection failed */
if(err) return callback('Login To <b>'+results[Object.keys(results)][2]+'</b> Failed!');
}).connect({
host: results[Object.keys(results)][3],
port: '22',
username: 'root',
password: decrypt(results[Object.keys(results)][5], password),
readyTimeout: 3000
})
我在节点中使用此库连接到SSH并执行:
https://github.com/mscdex/ssh2
问题是它使用SSH成功连接到服务器,执行命令并终止节点主进程和子进程,并且没有启动我的应用程序主进程(在主进程中我有代码启动子进程进行聚类)。
所以逻辑上我不知道为什么这不起作用我添加&amp;&amp;并且这意味着当第一个命令成功时执行另一个命令,因此该命令执行以下操作:
killall -2 node && node --expose-gc /root/myfolderaps/app.js
杀死节点主进程 启动节点app.js主进程
但它只会杀死它而不是开始。我该如何重写代码?