shell command not executing to start apache flume

25 views
Skip to first unread message

Ruchit Kadakia

unread,
Jul 26, 2016, 9:38:16 AM7/26/16
to nodejs

var cmd=require('node-cmd');

exports.list = function(req, res){

cmd.get(

'cd /usr/local/cellar/apache-flume-1.6.0-bin ;  // works well

 bin/flume-ng agent –conf ./conf/ -f conf/flume.conf -Dflume.root.logger=DEBUG,console -n TwitterAgent;  // doesn't work. This command is for loading twitter data into hdfs using apache flume.

touch hello.txt', //works well.

        function(data){

                console.log('the current working dir is : ',data);

            }

        );

 console.log('big data');


};


Ryan Schmidt

unread,
Jul 26, 2016, 5:26:53 PM7/26/16
to nod...@googlegroups.com
Well, why doesn't it work?

Programs that fail typically print error messages that say what went wrong. Error messages are typically printed on stderr. The node-cmd module you're using appears to only give you a way to access stdout, not stderr, so you may want to reconsider using node-cmd and use something else. But for now, you might be able to redirect stdout to stderr by using "2>&1", i.e.:


cmd.get(
'cd /usr/local/cellar/apache-flume-1.6.0-bin &&
bin/flume-ng agent –conf ./conf/ -f conf/flume.conf -Dflume.root.logger=DEBUG,console -n TwitterAgent 2>&1 &&
touch hello.txt',
function (data) {
console.log(data);
}
);


I also replaced your ";" command joiner with "&&". ";" proceeds to the next command even if the preceding command failed, which is not usually what one wants; "&&" exits on the first error.

Actually the node-cmd documentation suggests one does not need any command joiner if one puts the commands on separate lines. I'm not sure what method of command joining it uses in that case.

Your "touch hello.txt" is unlikely to succeed, since it would be created in the /usr/local/cellar/apache-flume-1.6.0-bin directory, which you probably don't want and probably don't have permission to do.

Ryan Schmidt

unread,
Jul 26, 2016, 6:24:53 PM7/26/16
to nod...@googlegroups.com

On Jul 26, 2016, at 4:22 PM, Ryan Schmidt wrote:

> But for now, you might be able to redirect stdout to stderr by using "2>&1"

I meant: you might be able to redirect stderr to stdout by using "2>&1"

Reply all
Reply to author
Forward
0 new messages