首页   >   代码编程

Shell脚本监控Linux进程状态,定时监测进程被关闭后自动重启

linux服务器上部署的tomcat服务,偶尔会因为内存不够等原因被系统kill掉,每次手动重启很麻烦,今天来写一个shell脚本定时监测进程状态,如果下次再被干掉了就自动重启。

1、新建restart.sh

[root@VM_41_196_centos ~]# cd /usr/local/
[root@VM_41_196_centos local]# vim restart.sh
[root@VM_41_196_centos local]# 

2、权限设置744

[root@VM_41_196_centos local]# chmod 744 restart.sh
[root@VM_41_196_centos local]# 

* 需要注意定时任务的用户有没有运行权限

3、编辑restart.sh文件

#!/bin/sh

export LANG="en_US.UTF-8"

export JAVA_HOME=/usr/local/java

export PATH=$JAVA_HOME/bin:$PATH 

export CLASSPATH=.:$JAVA_HOME/dt.jar:$JAVA_HOME/tools.jar 

#java

jarDir="/usr/local/test"

jar="test.jar"

logFile="/usr/local/test/logs/restart.log"

restart(){

cd ${2}

if [ ! -f ${1} ];then

echo "jar not exist" >> ${logFile}

return

fi

(java -jar ${1} &)

# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

}

check(){

count=$(ps -ef | grep ${1} | grep -v "grep")

if [ -n "${count}" ];then

#echo "`date` ${1} is running" >> ${logFile}

echo "`date` ${1} s running"

else

restart ${1} ${2}

echo "`date` ${1} is down. restartig" >> ${logFile}

#echo "`date` ${1} is down"

fi

}

check ${jar} ${jarDir}

4、执行脚本,检查是否正常

[root@VM_41_196_centos local]# ./restart.sh
[root@VM_41_196_centos local]# 

如果报错 bin/sh^M: bad interpreter: No such file or directory,那是因为你的 .sh脚本在windows系统下用记事本文件编写,不同系统的编码格式引起的。

解决方法:

(1)使用vi工具

[root@VM_41_196_centos local]# vim restart.sh

(2)利用set命令查看文件格式

:set ff 

或 

:set fileformat 

可以看到如下信息:

fileformat=dos 

或 

fileformat=unix 

这一步一定要按照这个来,vim之后,直接 :set ff,然后回车

Shell脚本监控Linux进程状态,定时监测进程被关闭后自动重启

(3) 利用set命令修改文件格式 

:set ff=unix 

或 

:set fileformat=unix 

保存

:wq

注:其实,在windows下通过git bash可以直接编写unix格式.sh!

5、加入系统定时任务

每小时检查jar包运行,如果退出重启

[root@VM_41_196_centos local]# crontab -e

添加自己的任务

* */1 * * * /bin/sh /usr/local/restart.sh

QQ群: 686430774  /  718410762

站长Q: 1347384268

如果文章有帮到你,可以考虑请博主喝杯咖啡!

分享到:

欢迎分享本文,转载请注明出处!

作者:不忘初心

发布时间:2019-07-03

永久地址:https://www.jiweichengzhu.com/article/53e6585af10148e1892ed6a1222c7ea6

评论