如何在崩溃后自动重启节点脚本 - 或者 init.d 启动该节点的服务?
How to auto restart Node script - or init.d service starting that node - after crash?
我目前在 Raspberry PI 运行 Raspbian 上有一个 node.js 脚本 运行。 node.js 脚本在启动时启动,所以我只需插入开发板即可。
但是,如果脚本崩溃导致节点退出,我怎样才能使引导服务(在 bood 处启动节点脚本)在节点服务崩溃时自动重启?
这是我在 /etc/init.d
中的引导服务示例:
#! /bin/sh
### BEGIN INIT INFO
# Provides: MyScriptService
# Required-Start: $all
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Starts my node.js script.
### END INIT INFO
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin
. /lib/init/vars.sh
. /lib/lsb/init-functions
case "" in
start)
log_begin_msg "Starting my script"
node /home/pi/myscript.js
log_end_msg $?
exit 0
;;
stop)
log_begin_msg "Stopping my script"
log_end_msg $?
exit 0
;;
*)
exit 1
;;
esac
更新: 能够自己在 Node 中修复它。
你可能应该 运行 你的脚本 pm2 这是节点应用程序的进程管理器,如果它崩溃达到一定数量的重新启动,它会重新启动你的节点程序。
安装 pm2
后,更改 init.d 脚本中的以下行
node /home/pi/myscript.js
给它:
pm2 start /home/pi/myscript.js
您还将获得一些其他好处,例如 start/stop/restart 您的应用程序 pm2
和一些日志记录,以便您可以回溯应用程序崩溃的原因。
在对 Node 可能性进行更深入的搜索后,我找到了一种不让脚本崩溃的方法,如果没有捕获到异常,只需重新启动一切:
process.on('uncaughtException', function(err){
console.log(err);
restartMyScript();
});
我目前在 Raspberry PI 运行 Raspbian 上有一个 node.js 脚本 运行。 node.js 脚本在启动时启动,所以我只需插入开发板即可。
但是,如果脚本崩溃导致节点退出,我怎样才能使引导服务(在 bood 处启动节点脚本)在节点服务崩溃时自动重启?
这是我在 /etc/init.d
中的引导服务示例:
#! /bin/sh
### BEGIN INIT INFO
# Provides: MyScriptService
# Required-Start: $all
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Starts my node.js script.
### END INIT INFO
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin
. /lib/init/vars.sh
. /lib/lsb/init-functions
case "" in
start)
log_begin_msg "Starting my script"
node /home/pi/myscript.js
log_end_msg $?
exit 0
;;
stop)
log_begin_msg "Stopping my script"
log_end_msg $?
exit 0
;;
*)
exit 1
;;
esac
更新: 能够自己在 Node 中修复它。
你可能应该 运行 你的脚本 pm2 这是节点应用程序的进程管理器,如果它崩溃达到一定数量的重新启动,它会重新启动你的节点程序。
安装 pm2
后,更改 init.d 脚本中的以下行
node /home/pi/myscript.js
给它:
pm2 start /home/pi/myscript.js
您还将获得一些其他好处,例如 start/stop/restart 您的应用程序 pm2
和一些日志记录,以便您可以回溯应用程序崩溃的原因。
在对 Node 可能性进行更深入的搜索后,我找到了一种不让脚本崩溃的方法,如果没有捕获到异常,只需重新启动一切:
process.on('uncaughtException', function(err){
console.log(err);
restartMyScript();
});