抑郁症健康,内容丰富有趣,生活中的好帮手!
抑郁症健康 > 通过Shell命令-监视一个进程或端口 挂掉后自动重启 并自定义日志

通过Shell命令-监视一个进程或端口 挂掉后自动重启 并自定义日志

时间:2023-05-14 18:09:44

相关推荐

1.问题的产生

主要是因为某些内存问题,kylin总是自动挂掉。排查后发现因为多任务执行会占用很大内存,oom killer可能会因为内存不足了,把内存占用大的或者增长快的给自动kill掉。所以这边做了一些处理,写了一个自动重启。

2.针对进程名

processExist=`ps aux|grep kylin |grep -v "grep"`if [[ -z $processExist ]];then/opt/soft/test.sh startecho "proecss is restarted"fi

第一行是执行查询’kylin’的进程,并把grep的进程去掉,这样就能确定进程是否存活(但是不保险,后续会说)

然后就是简单的判断了

-z是判断 :

z 判断 变量的值,是否为空; zero = 0变量的值,为空,返回0,为true变量的值,非空,返回1,为false

如果为空,我们就执行脚本!并输出一条消息。当然也可以自定义一些动作,比如日志,并输出到指定文件。

单独写一下日志的脚本就是:

MYLOG="/opt/soft/logs/kylin.restart.log"echo "$1"echo "$(date -d today +"%Y%m%d %H:%M:%S") - $1" >> ${MYLOG} 2>> ${MYLOG}

这个仅仅是打印了时间而已,可以在$1进行 自定义。

但是这样有一个弊端。很多时候,我们无法通过名字去确定进程,可能几个进程有相似的名字,假如说我们有kylin_log 和 kylin_test两个进程,当我们grep的时候用kylin会查出来两个进程(除了grep)。

所以可以用另外一种方式——端口。

###3.针对端口

比如我想针对固定的7070端口进行监控,那么要修改shell脚本,使用awk:

KylinListeningPort=`netstat -an | grep ":7070" | awk '$1 == "tcp" && $NF == "LISTEN" {print $0}' | wc -l`

然后进行判断

if [ $KylinListeningPort-eq 0 ];then如果端口没有占用的话要怎么怎么样else如果端口被占用的话要怎么怎么样fi

如果觉得《通过Shell命令-监视一个进程或端口 挂掉后自动重启 并自定义日志》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。