执行启动脚本与手动编写命令有何不同?

执行启动脚本与手动编写命令有何不同?

这是我的针对 RedHat EL 6 的 Node.JS 网络服务器启动脚本。

#!/bin/sh
# chkconfig:   345 01 01
# description: DeepFlow startup script

case $1 in
        start)
            echo "Starting DeepFlow"
            cd /home/admin/Desktop/DeepFlow/server
            ./bin/node js/server.js
            ;;
        stop)
            echo "Stopping DeepFlow"
            killall node
            ;;
esac

出于某种原因,当我手动输入

            cd /home/admin/Desktop/DeepFlow/server
            ./bin/node js/server.js

一切正常,但是当我这样做时,service DeepFlow start我收到一个 Node.JS 错误:

Starting DeepFlow

events.js:71
        throw arguments[1]; // Unhandled 'error' event
                       ^
Error: failed to connect to [localhost:27017]

在终端中手动输入脚本行与使用运行脚本之间有什么区别service

答案1

尝试使用完整路径名。

NODE_BIN="/home/admin/Desktop/DeepFlow/server/bin/node"
SERVER_JS="/home/admin/Desktop/DeepFlow/server/js/server.js"
echo "Starting DeepFlow"
$NODE_BIN $SERVER_JS
;;

另外,最好检查一下哪个用户正在启动服务器。如果在启动时运行,则所有者将是“root”。

相关内容