4

起動時に node.js サーバーを実行するように永久に構成しました。このスクリプトを使用します。それは正常に動作します。サーバーを永久に実行し続けます。しかし、フォーエバー リストを実行すると、サーバーがここに表示されません。実行されていることは知っていますが、このリストにはありません。システムが永久に 2 つのインスタンスを実行しているようです。

root@ddd [/etc/init.d]# chkconfig  --list |grep node1
node1 0:off   1:off   2:on    3:on    4:on    5:on    6:off

これはスクリプトです: /etc/init.d/node1

NAME=node1
NODE_BIN_DIR=/usr/local/bin
NODE_PATH=/usr/local/lib/node_modules
APPLICATION_DIRECTORY=/home/user1/www
APPLICATION_START=node1.js
PIDFILE=/var/run/node1.pid
LOGFILE=/var/log/node1.log

PATH=$NODE_BIN_DIR:$PATH
export NODE_PATH=$NODE_PATH

start() {
    echo "Starting $NAME"
    forever --pidFile $PIDFILE --sourceDir $APPLICATION_DIRECTORY \
        -a -l $LOGFILE --minUptime 5000 --spinSleepTime 2000 \
        start $APPLICATION_START &
    RETVAL=$?
}

stop() {
    if [ -f $PIDFILE ]; then
        echo "Shutting down $NAME"
        forever stop $APPLICATION_START
        rm -f $PIDFILE
        RETVAL=$?
    else
        echo "$NAME is not running."
        RETVAL=0
    fi
}

restart() {
    echo "Restarting $NAME"
    stop
    start
}

status() {
    echo "Status for $NAME:"
    forever list
    RETVAL=$?
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    status)
        status
        ;;
    restart)
        restart
        ;;
    *)
        echo "Usage: {start|stop|status|restart}"
        exit 1
        ;;
esac
exit $RETVAL
4

5 に答える 5

3

永遠にデーモン化しようとして時間を無駄にするつもりはありません。

pm2は新しい王様です!永遠に死んだ、私を信じて

systemd または OS と同等のサービスとして pm2 を実行する方法は次のとおりです。

npm install -g pm2

pm2 startup

今、あなたはできる:

service pm2 status|start|stop|restart

また:

pm2 save

実行中の pm2 アプリのスナップショットを取得し、再起動時にそれらをすべて再起動します (crontab エントリは必要ありません)。

終了した!

pm2 は永遠よりもはるかに優れています。forever とまったく同じですが、それ以上の機能があります。

pm2 list # equivalent to forever list

pm2 start app.js --name "wotever" # equivalent to forever start

pm2 start app.js -i 0 --name "wotever" # load balance your app on all available cores 

最後のコマンドを見ましたか?これが何を意味するか分かりますか?私は畏敬の念を抱いています!

通常、アプリは 1 つのコアで実行されます。もう違います!私たちはスピードを話しています!

PM2 永遠に!

于 2017-01-29T02:42:19.503 に答える
0

問題は、すべてのファイルが ~/.forever に永久に保持されることです。上記のスクリプトは root として実行されます。それらをどこに保存するかはわかりませんが、私にとっては「sudo forever list」を実行するとうまくいきます。

于 2014-12-17T19:25:56.403 に答える