运行CentOS(Linux信号服务器3.10.0-123.8.1.el7.x86_64)。当我使用SSH登录服务器然后手动执行以下行时,它可以工作,但是当我退出到服务器的SSH连接时崩溃。
$ node /var/www/html/signal-server/avi.js &
当我没有通过SSH手动登录时,此机器人也无法让服务器运行:
#!/bin/bash
while :
do
# 1
avi=$(pgrep -f "avi.js")
if [[ "$avi" ]]; then
log1="1 - running avi.js $1 $2"
else
log1="1 - re-launch avi.js $1 $2"
ps aux | grep "avi.js" | awk '{print $2}' | xargs kill
sleep 1
# same if nohup also used
node /var/www/html/signal-server/avi.js &
fi
tt=$(date +"%Y-%m-%d %T")
echo "$tt" "$log1"
sleep 2
done
我怎样才能让它永远运行? (我还有其他服务,他们工作得很好,只有当我从SSH会话退出时总会崩溃)
答案 0 :(得分:3)
nohup
会做你想做的事情
nohup node /var/www/html/signal-server/avi.js &
您应该为您的服务编写一个systemd脚本,然后如果您的服务器重新启动,您的服务将再次启动。
这是一个粗略的想法,这样的脚本可能是什么样的
[Service]
ExecStart=node /var/www/html/signal-server/avi.js
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=node-avi
User=some-user
Group=some-group
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
花一点时间阅读systemd文档