Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使此服务器进程永远运行?_Javascript_Node.js_Bash_Centos - Fatal编程技术网

Javascript 如何使此服务器进程永远运行?

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 $

我使用nodejs运行这个Javascript信号服务器

但每天它都会崩溃,结果整个服务都失败了。如果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

为什么/在哪里/如何崩溃?它崩溃时没有分配一些无效变量(一些代码错误,因为服务器脚本太大,我们想暂时让它自动重新启动)