[英]How to make this server process run forever?
我有使用nodejs运行的Javascript Signal服务器。
但是每天都在崩溃,结果整个服务崩溃了。 我正在使用以下无限循环重新启动nodejs脚本(如果它已崩溃或未运行)。 但这并不完美。
任何人都可以优化它,或者如果该进程突然停止运行,还有没有更好的方法来保持a.js始终运行。
#!/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
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.