0
如果我從命令行(節點index.js)運行它,它將按預期工作。但是當我從init.d腳本執行這個Node.js(v0.10.4)腳本作爲守護進程時,exec回調中的stdout返回值沒有設置。我該如何解決?爲什麼在以守護進程運行的node.js腳本中執行子進程後,未設置stdout?
Node.js的腳本:
var exec = require('child_process').exec;
setInterval(function()
{
exec('get_switch_state', function(err, stdout, stderr)
{
if(stdout == "on")
{
// Do something.
}
});
}, 5000);
的init.d腳本:
#!/bin/bash
NODE=/development/nvm/v0.10.4/bin/node
SERVER_JS_FILE=/home/blahname/app/index.js
USER=root
OUT=/home/pi/nodejs.log
case "$1" in
start)
echo "starting node: $NODE $SERVER_JS_FILE"
sudo -u $USER $NODE $SERVER_JS_FILE > $OUT 2>$OUT &
;;
stop)
killall $NODE
;;
*)
echo "usage: $0 (start|stop)"
esac
exit 0
/home/pi/nodejs.log顯示什麼? – user568109 2013-05-04 22:46:14
如果我用'console.log(「got here」)替換'// Do something.',它會顯示「got here」,但是如果我用'console.log(stdout)替換它'它不顯示'on 「在日誌文件中。 – sizzle 2013-05-06 16:47:41