スタートアップスクリプトの実行は、コマンドを手動で記述することとどのように異なりますか?


0

これは、RedHat EL 6用のNode.JS Webサーバー起動スクリプトです。

#!/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」になります。


いいえ、動作しませんでした。
ランダムブルー

環境変数にライブラリパスがありますか?export NODE_PATH = "/ home / admin / Desktop / DeepFlow / server /"を使用すると役立つ場合があります。
花嫁
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.