设备监控,liunx 脚本实时监控服务

这里写目录标题

    • 一.命令说明
    • 二、编写要执行脚本
    • 三、手动测试执行脚本
    • 四、配置linux系统定时任务
    • 五、测试

服务器主机会出现断电,和其他jar包服务进程被杀死的情况,写个shell脚本 定时监控它们。

当然,断电重启的时候有些命令设置开机重启
再写个心跳相关的接口 监控主机服务 和摄像头状态~

一.命令说明

ps aux | grep 进程名 | grep -v grep :进程存在则输出信息,不存在则没输出
ps -ef | grep 进程名 | grep -v grep | wc -l :进程存在则输出行数(也就是数量),不存在则输出0

二、编写要执行脚本

#!/bin/bash
# 指定要检测的端口号  zlmeida
PORT_TO_CHECK=8082
# 关联JAR包名称和相应的启动命令
declare -A JAR_COMMANDS=(
    ["wvp-pro-assist.jar"]="/usr/bin/java -jar /opt/app/assist/wvp-pro-assist.jar --spring.config.location=/opt/app/assist/application-prod.yml"
    ["wvp-pro.jar"]="/usr/bin/java -jar /opt/app/pro/wvp-pro.jar --spring.config.location=/opt/app/pro/application-prod.yml"
)

# 检测端口是否被占用
if lsof -Pi :$PORT_TO_CHECK -sTCP:LISTEN -t > /dev/null; then
    echo "Port $PORT_TO_CHECK is already in use. Cannot proceed."
else
   /opt/app/ZLMediaKit/release/linux/Debug/MediaServer -d &
fi



# 遍历所有JAR包
for JAR_NAME in "${!JAR_COMMANDS[@]}"
do
    # 检查Java进程是否在运行
    if pgrep -f "$JAR_NAME" > /dev/null
    then
        echo "$JAR_NAME is running."
    else
        echo "$JAR_NAME is not running. Restarting..."
        
        # 获取对应JAR包的启动命令
        COMMAND="${JAR_COMMANDS[$JAR_NAME]}"
        
        # 执行启动命令
        eval "$COMMAND"
        # 你也可以选择发送通知、记录日志等其他操作
        
    fi
done

三、手动测试执行脚本

赋予权限:chmod 777 look_jar.sh

执行脚本: ./look_jar.sh
运行结果:

在这里插入图片描述
个错误通常是由于脚本文件的换行符格式不正确导致的。在Windows系统中,换行符是 \r\n(回车和换行),而在Unix/Linux系统中,是 \n(换行)。

在你的情况下,看起来脚本文件 look_jar.sh 是在Windows系统中创建的,因此包含了Windows风格的换行符。在Linux系统下执行脚本时,可能会导致解释器无法正确识别。

你可以使用 dos2unix 工具来将文件转换为Unix风格的换行符。如果系统上没有安装 dos2unix,你可以使用 sed 命令进行转换。以下是一个示例:

sed -i 's/\r$//' look_jar.sh

kill 进程号(PID):

 ps -ef | grep look_jar.sh
kill  <pid>

四、配置linux系统定时任务

# u代表所有者,x代表执行权限,+表示增加权限
chmod u+x look_jar.sh
chmod u+x look_jar.log
#配置系统定时任务命令
crontab -e
 
#写入需要执行的脚本,每1小时运行一次(cron表达式)
0 */1 * * * /opt/app/look_jar.sh  >> /opt/app/look_jar.log

#把脚本的错误重定向到定向到日志文件
*/1 * * * * /opt/app/look_jar.sh >> /opt/app/look_jar.log 2>&1
#重启系统定时任务(才会生效)
service crond restart
#或者
systemctl restart crond.service

#或者
sudo systemctl restart cron

测试的时候可以把脚本周期设置短一点,用来测试
*/5 * * * * /opt/app/look_jar.sh >> /opt/app/look_jar.log

五、测试

设备监控,liunx 脚本实时监控服务_第1张图片

你可能感兴趣的:(运维,python,pycharm,开发语言)