不知道为什么这不起作用,如果我运行一个简单的命令,例如 cmd='ls -all' 然后我会得到输出,但是当我使用它来运行一个需要一些时间才能完成的命令时,我没有得到什么都回来了。
在这个例子中,我使用 lftp 镜像一些文件夹并想要得到回复,如果我从终端运行命令,那么我当然会看到输出,但是使用子进程我什么也得不到:
var childProcess = require('child_process');
var cmd = 'lftp sftp://user:password@somehost -e "mirror -R --delete --parallel=5 /usr/share/scripts/ /volumes/folders/usr/share/;bye"';
childProcess.exec(cmd, function (error, stdout, stderr) {
console.log('stdout:'+stdout);
console.log('stderr:'+stderr);
console.log('error:'+error);
});
我也尝试了 spawn 方法,也没有返回任何结果:
var spawn = require('child_process').spawn;
var lftp = spawn('lftp',['sftp://user:password@somehost', '-e "mirror -R --delete --parallel=5 /usr/share/scripts/ /volumes/folders/usr/share/;bye"']);
lftp.stdout.on('data', function(data) {
console.log(data.toString());
});