gpt4 book ai didi

javascript - 如何让这个服务器进程永远运行呢?

转载 作者:行者123 更新时间:2023-12-03 11:31:40 24 4
gpt4 key购买 nike

我有一个使用 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

关于javascript - 如何让这个服务器进程永远运行呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26706625/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com