预防项目离线的Linux脚本

前言

十一国庆假期将至,公司就开始安排国庆假期值班的任务了。值班的主要任务就是确保项目不会停止,确保停止后能联系到相关人员快速重启项目。

为此,突然想到,可以写一个Linux定时任务,定时检查项目是否在线,不在线则主动重启项目。

首先,写一个脚本,用于判断项目是否存在,不存在则主动重启项目;然后,将该脚本添加到Linux的定时任务中。以下为实现步骤。

编写Linux脚本

 1、准备相关文件,配置相关权限

## 在临时目录中创建相关的目录和脚本
cd /tmp
mkdir timedTask
cd timedTask
## project.log 文件用于记录脚本的运行日志,project.sh 文件为任务脚本
touch project.log, project.sh

chmod 666 project.log
## 设置脚本文件的权限,方便用户运行和启动
chmod 777 project.sh

2、编写脚本

## project.sh 脚本内容如下


#!/bin/sh
## 项目路径
SERVICE_DIR=/home/dhj/project
## 服务名称
SERVICE_NAME=ProjectName
## 脚本日志
LOG_NAME=/tmp/timedTask/project.log

PID=`ps -ef | grep -w "$SERVICE_NAME" | grep -v "grep" | awk '{print $2}'`
if [ "$PID" == "" ]; then
    ## 项目不在运行
	
	echo -e "\n==================== $(date +'%F %T')" >> $LOG_NAME
    ## 重启项目,注意:不同的项目和环境重启项目方式各不相同,以自己的为准
	nohup java -Xms1024m -Xmx1024m -jar $SERVICE_DIR/$SERVICE_NAME\.jar --spring.profiles.active=prod
	
    ## 休眠10秒,重新检测项目,并打印其PID
    sleep 10
	PID2=`ps -ef | grep -w "$SERVICE_NAME" | grep -v "grep" | awk '{print $2}'`
	if [ "$PID2" == "" ]; then
		echo -e "\e[1;31m 无法找到$SERVICE_NAME服务,重启服务失败,需要开发人员紧急处理!!! \e[0m"  >> $LOG_NAME
	else
		echo -e "\e[1;31m 无法找到$SERVICE_NAME服务,已重启该服务。PID $PID2 \e[0m"  >> $LOG_NAME
	fi

else
    ## 项目还在运行
	echo -e "\n==================== $(date +'%F %T')"  >> $LOG_NAME
	echo -e "\e[1;32m $SERVICE_NAME服务已存在,无需重启该服务。PID $PID \e[0m"  >> $LOG_NAME
fi

添加定时任务

1、确保crond服务启动

## 检查定时任务 crond服务状态
service crond status

## 如果不存在则启动
service crond start

crond 已启动效果如下: 

 2、检查当前用户是否有其他定时任务

## 查看当前用户的所有定时任务,为空则表示没有任何定时任务
crontab -l

## 编辑当前用户的定时任务列表,用法跟vim编辑器一致
crontab -e

## 添加如下定时任务,这里是每隔5分钟执行一次。
*/5 * * * * /tmp/timedTask/project.sh

参考文件:crontab用法与实例 | 《Linux就该这么学》 (linuxprobe.com)

效果

 至此,一个简单的预防项目离线的Linux脚本就完成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值