我有一个 node.js 应用程序,它每天都连接到服务器。
在此服务器上,可以使用新版本的应用程序,如果是,则安装的应用程序下载它,检查下载是否完成,如果是,则停止自身调用 shell 脚本,将旧应用程序替换为新应用程序, 并启动它。
我正在努力启动更新脚本。
我知道我可以用 child_process_execFile 函数启动它,我这样做:
var execF = require('child_process').execFile;
var PATH = process.argv[1].substr(0, process.argv[1].lastIndexOf('/')+1),
filename = 'newapp.js',
execF(PATH + 'up.sh', [PATH + filename], function () {console.log('done'); return ;});
up.sh,现在只是:
cat $1 > /home/pi/test
我在控制台中打印了“完成”,但没有创建测试。
我知道 execFile 创建了一个子进程,它是阻止脚本执行此操作的原因吗?
如果我成功开始这个,我知道我只需要在脚本中创建一些 cp 来让我的应用程序自动更新。
编辑:
像往常一样启动(从控制台调用脚本),它运行良好,从node.js调用时脚本不执行是否有原因?