【发布时间】:2013-04-28 22:27:01
【问题描述】:
如果我从命令行 (node index.js) 运行它,这将按预期工作。但是,当我将这个 Node.js (v0.10.4) 脚本作为来自 init.d 脚本的守护进程执行时,未设置 exec 回调中的 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 显示什么?
-
如果我将
// Do something.替换为console.log("got here"),它将显示“到达这里”,但如果我将其替换为console.log(stdout),它不会在日志文件中显示“开启”。