下面写了一个一键生成一个巡检sh 代码  如下所示:

#########################################################################
# Author: shuxiasuiyue
# Mail: yuluolishang@qq.com
# Created Time: 2026年9月22日09:50:44
# Description: 
#########################################################################
#!/bin/bash

LOG_FILE="/opt/web/shell/logs/$(date "+%Y-%m-%d").log"
echo  "系统巡检报告" > $LOG_FILE
echo "生成时间: $(date "+%Y-%m-%d %H:%M:%S")" >> $LOG_FILE

log(){
echo "$1" |tee -a $LOG_FILE
}

log ""
log "======================[1] 系统基本信息========================"
log "主机名: $(hostname)"
log "IP地址: $(hostname -I | cut -d' ' -f1)"
log "操作系统: $(cat /etc/os-release | grep PRETTY_NAME | cut -d= -f2 | tr -d '\"')"
log "内核版本: $(uname -r)"
log "启动时间: $(uptime -s)"
log "运行时长: $(uptime -p)"
log "系统负载: $(uptime | awk -F'load average:' '{print $2}')"
log "当前时间: $(date)"
log ""

log "======================[2] CPU 信息==========================:"
#log "CPU 型号: $(lscpu | grep 'Model name' | awk -F: '{print $2}' | sed 's/^ *//')"
log "逻辑CPU核数:  $(grep "processor" /proc/cpuinfo|sort -u|wc -l)"
log "物理CPU核数:  $(grep "physical id" /proc/cpuinfo |sort -u|wc -l)"
log "CPU 使用率: $(top -bn1 | grep '%Cpu' | awk '{print $2}')%"
log ""

log "======================[3] 内存使用情况=========================="
free -h | tee -a $LOG_FILE
log  "总共内存:  $(free -mh|awk "NR==2"|awk '{print $2}')"
log  "使用内存: $(free -mh|awk "NR==2"|awk '{print $3}')"
log  "剩余内存: $(free -mh|awk "NR==2"|awk '{print $7}')"
log  "内存使用占比:  $(free | grep -i mem |awk '{print $6/$2*100}'|cut -c1-5)"
log ""

log "======================[4] 磁盘使用情况=========================="
df -hT | tee -a $LOG_FILE
log ""

log "======================[5] 网络配置和连接=========================="
log "IP 地址: $(hostname -I)"
log "默认网关: $(ip route | grep default | awk '{print $3}')"
#log "网络接口状态:"
#ifconfig  | tee -a $LOG_FILE
log ""

log "======================[6] 服务状态检查=========================="
IAM_SCREEN_NAME="IAM"    # IAM  端口 9519   easyswoole 相关服务
IAM_PORT=9519

if ss -lntp | grep -q ":$IAM_PORT ";
then
    log "-----IAM服务正常-----"
    ss -lntp | grep ":$IAM_PORT " | tee -a $LOG_FILE
else
    log "-----IAM服务异常,重新启动-----"
    screen -dmS "$IAM_SCREEN_NAME" bash -c "cd /opt/web_iam/IAM && php easyswoole server start"
    log "IAM服务已在 screen 会话 [$IAM_SCREEN_NAME] 中启动"
fi
log ""




WY_SCRIPT_NAME="get_data_from_mysql_to_kafka"   # 网源source =3

if pgrep -f "$WY_SCRIPT_NAME.py" > /dev/null;
then
    log "-----数据程序正常-----"
    ps aux | grep $WY_SCRIPT_NAME | tee -a $LOG_FILE
else
    log "-----数据程序异常,重新启动-----"
    screen -dmS "$WY_SCRIPT_NAME" python3 /opt/message_psrp/$WY_SCRIPT_NAME.py
    log "网源数据程序已在 screen 会话 [$WY_SCRIPT_NAME] 中启动"
fi
log ""




log "========================[7] crontab服务 ============================"
log "当前 crontab 任务列表:"
crontab -l 2>/dev/null | tee -a $LOG_FILE
log ""

check_cron() {
    local desc=$1
    local pattern=$2
    if crontab -l 2>/dev/null | grep -q "$pattern"; then
        log "-----${desc} cron 任务已配置-----"
    else
        log "-----${desc} cron 任务缺失,请手动恢复-----"
    fi
}

check_cron "上游数据处理datax" "datax/job/data_process.sh"

log ""

check_cron_process() {
    local desc=$1
    local pattern=$2
    if pgrep -f "$pattern" > /dev/null; then
        log "-----${desc} 进程运行中-----"
        pgrep -af "$pattern" | tee -a $LOG_FILE
    else
        log "-----${desc} 进程未运行(crontab 到点会自动拉起,无需手工启动)-----"
    fi
}

check_cron_process "上游数据处理datax" "yq_data_process.sh"

log ""

log "========================[8] 登录记录============================"
log "当前登录用户:"
who | tee -a $LOG_FILE
log ""

log "最近登录记录:"
last -a | head -10 | tee -a $LOG_FILE
log ""

log "检查系统重启记录:"
last reboot | head -5 | tee -a $LOG_FILE
log ""

log "========================[9] 解析卡统计============================"
log "芯片个数/4"
lspci |grep 100 |wc -l |tee -a $LOG_FILE
log ""

log "========================[10] 性能分析============================"
log "内存占用排行前5:"
ps aux --sort=-%mem | head -6 | tee -a $LOG_FILE
log ""

log "CPU 占用排行前5:"
ps aux --sort=-%cpu | head -6 | tee -a $LOG_FILE
log ""

log "=============================巡检完成============================"
log "巡检报告生成完成,保存路径: $LOG_FILE"
log ""

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐