专业的编程技术博客社区

网站首页 > 博客文章 正文

shell脚本守护node-red进程,让程序一直运行

baijin 2025-06-08 19:12:12 博客文章 2 ℃ 0 评论

真后悔没有早点用shell脚本,我才花了2天搞完了shell菜鸟教程,解决了我一个陈年旧病

因为我一直用node-red,但是有时候node-red会莫名其妙的掉线了,发现的时候已经丢失了很多数据了。


1、了解命令 p2 -ef | grep "**" | grep -v grep

这个是根据名称查找进程,并且过滤掉grep自己的进程

2、开始写脚本

#!/bin/bash
while true :
do
ps -ef | grep "node-red" | grep -v grep
if  [ "$?" -ne 0 ]
then  pm2 start ~/Desktop/nodejs/bin/node-red -- -v
else echo "common--->"
fi
sleep 10
done

while true :

do

语句A

done

这个是一个死循环,会一直执行语句


这里的语句A是什么呢?

执行ps -ef | grep "node-red" | grep -v grep

获取结果"$?" 的长度

-ne是不等于的意思

我们可以做一个测试,

#!/bin/bash
ps -ef | grep "node-red" | grep -v grep
echo "$?"

当node-red正常运行的时候,看看ps -ef | grep "node-red" | grep -v grep返回的是什么?

当node-red异常运行的时候,看看ps -ef | grep "node-red" | grep -v grep返回的是什么?

根据以上的测试,我们发现,当返回的不为0的时候,就说明进程异常;

死循环的话,感觉太耗性能了,也没有必要

可以每次执行结束以后,休眠10s sleep 10

以下脚本如下

#!/bin/bash
while true :
do
ps -ef | grep "node-red" | grep -v grep
echo "$?"
if  [ "$?" -ne 0 ]
then  pm2 start ~/Desktop/nodejs/bin/node-red -- -v
else echo "common--->"
fi
sleep 10
done


测试脚本是否有效

1、node-red的初始状态是关闭

2、启用脚本 ./pm2 start 发现启动了node-red

3、现在查看node-red的启动状态

pm2 list

node-red启动了

因为每次循环间隔10s,若未启用,则启用,若启用了,则打印common--->

我们可以看到下图左边都是common--->


4、我关闭node-red,看看脚本会不会启用node-red

几秒以后启用了,哈哈哈哈哈,完美

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表