Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在从节点脚本执行时查看bash命令_Node.js_Bash - Fatal编程技术网

Node.js 如何在从节点脚本执行时查看bash命令

Node.js 如何在从节点脚本执行时查看bash命令,node.js,bash,Node.js,Bash,我有一个节点应用程序,我使用bitbucket中的webhook触发bash脚本来运行一些命令来部署我的应用程序。它可以工作,但是我无法查看正在运行的任何命令(即进度命令)。我怎样才能做到这一点 以下是相关代码: var shellPath = path.join(__dirname + '../../deploy/deploy.sh'); var exec = require('child_process').exec; function puts(error, stdout,

我有一个节点应用程序,我使用bitbucket中的webhook触发bash脚本来运行一些命令来部署我的应用程序。它可以工作,但是我无法查看正在运行的任何命令(即进度命令)。我怎样才能做到这一点

以下是相关代码:

  var shellPath = path.join(__dirname + '../../deploy/deploy.sh');
  var exec = require('child_process').exec;

  function puts(error, stdout, stderr) {
    console.log('stout: ', stdout)
    console.log('error: ', error)
    console.log('stderr: ', stderr)
  }

  exec(shellPath, puts);
deploy.sh-

echo Preparing to Git Fetch
git reset --hard origin/master
echo Preparing to clean
git clean -f
echo Preparing to pull
git pull
echo preparing to pull
npm i --production
echo preparing to restart pm2
pm2 restart client-www
echo Finished deploy

您可以将结果输出到如下文件:

var shellPath = path.join(__dirname + '../../deploy/deploy.sh > ./output.log');
var exec = require('child_process').exec;

function puts(error, stdout, stderr) {
  console.log('stout: ', stdout)
  console.log('error: ', error)
  console.log('stderr: ', stderr)
}

exec(shellPath, puts);
并使用它来查看文件和打印输出

见:
var Tail = require('always-tail');
var fs = require('fs');
var filename = "./output.log";

if (!fs.existsSync(filename)) fs.writeFileSync(filename, "");

var tail = new Tail(filename, '\n');

tail.on('line', function(data) {
  console.log("got line:", data);
});


tail.on('error', function(data) {
  console.log("error:", data);
});

tail.watch();