Javascript 如何使此服务器进程永远运行?
我使用nodejs运行这个Javascript信号服务器 但每天它都会崩溃,结果整个服务都失败了。如果nodejs脚本崩溃或没有运行,我将使用下面的无限循环来重新启动它。但这并不完全有效 是否有人可以对其进行优化,或者如果进程突然停止运行,是否有更好的方法保持a.js始终运行Javascript 如何使此服务器进程永远运行?,javascript,node.js,bash,centos,Javascript,Node.js,Bash,Centos,我使用nodejs运行这个Javascript信号服务器 但每天它都会崩溃,结果整个服务都失败了。如果nodejs脚本崩溃或没有运行,我将使用下面的无限循环来重新启动它。但这并不完全有效 是否有人可以对其进行优化,或者如果进程突然停止运行,是否有更好的方法保持a.js始终运行 #!/bin/bash while : do # 1 videoupload=$(pgrep -f "a.js") if [ $videoupload ]; then log1="running a $
#!/bin/bash
while :
do
# 1
videoupload=$(pgrep -f "a.js")
if [ $videoupload ]; then
log1="running a $1 $2"
else
log1="re-launch a $1 $2"
nohup node /var/tmp/signal/a.js 2>&1 | tee -a /var/tmp/signal.log &
fi
echo $log1
sleep 1
done
如果您使用的是新的CentOS 6,更好的处理方法是将其放入Upstart脚本中。Upstart监视所有系统守护进程并确保它们保持运行。下面的Upstart配置也将在系统引导时启动您的进程 编辑文件
/etc/init/a.conf
,并将以下配置放入其中。您需要sudo
以root用户身份进行编辑
description "a.js"
author "YumYumYum"
# Stanzas
#
# Stanzas control when and how a process is started and stopped
# See a list of stanzas here: http://upstart.ubuntu.com/wiki/Stanzas#respawn
# When to start the service
start on runlevel [2345]
# When to stop the service
stop on runlevel [016]
# Automatically restart process if crashed
respawn
script
echo $$ > /var/run/a.pid;
exec node /var/tmp/signal/a.js
end script
post-stop script
rm -f /var/run/a.pid
end script
现在已经为流程创建了Upstart配置,您可以从命令行启动它:
$ sudo service a start
Upstart将监视您的进程,并在进程停止时重新启动它。它还将日志重定向到
/var/log/upstart/a.log
为什么/在哪里/如何崩溃?它崩溃时没有分配一些无效变量(一些代码错误,因为服务器脚本太大,我们想暂时让它自动重新启动)