4

我永远配置为在启动时运行我的 node.js 服务器。使用这个 scipt。它工作正常。并永远保持服务器运行。但是,当我运行永久列表时,我在这里看不到我的服务器!我知道它正在运行,但它从未在此列表中。看起来系统正在运行两个永远的实例。

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是新王!永远死了,相信我

以下是如何将 pm2 作为 systemd 或 OS 等效服务运行:

npm install -g pm2

pm2 startup

现在你可以这样做:

service pm2 status|start|stop|restart

还:

pm2 save

将为您正在运行的 pm2 应用程序拍摄快照,并在重新启动时重新启动它们(不需要 crontab 条目)

完成的!

pm2 比永远好得多。它与永远完全相同,但更多!

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 

你看到最后一个命令了吗?你明白这意味着什么吗?我敬畏!

通常,您的应用程序在一个内核上运行。不再!我们在谈论速度!

永远的 PM2!

于 2017-01-29T02:42:19.503 回答
2

您也可以使用 @reboot 参数将其永久放入用户的 crontab 中,以便在启动时启动。

就像是:

@reboot /usr/bin/forever start /path/to/script.js

(这是假设永远在/usr/bin/;它也可能在某个地方/usr/local/bin/。)

于 2014-03-24T16:27:12.690 回答
0

问题是它的所有文件都永远保存在 ~/.forever 中。上面的脚本以 root 身份运行。不确定它将它们存储在哪里,但对我来说,做“sudo forever list”就可以了。

于 2014-12-17T19:25:56.403 回答
0

我喜欢使用forever-service守护进程 node.js 进程,它会通过在启动和日志文件重定向时启动它们来处理所有事情。

https://www.npmjs.com/package/forever-service

于 2019-09-10T21:15:22.067 回答
0

只需简单地使用start命令 forever start /path/to/script.js

于 2017-07-10T02:41:09.623 回答