linux 系统一键巡检sh

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

bash 复制代码
#########################################################################
# 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 ""
相关推荐
longzhizhui9264 天前
Ubuntu 全版本 CVE-2026-98432 内核安全升级操作手册
ubuntu·网络安全·云计算·bash
行走的陀螺仪6 天前
Claude Code 从入门到实战(二):Bash工具、Plan模式与后台任务
开发语言·bash
SEO_juper9 天前
Bash 交叉验证 robots.txt 和 sitemap:两个文件自相矛盾,页面永远收录不了
开发语言·python·node.js·json·bash
无足鸟ICT10 天前
【RHCA+】type命令(判断命令类型)
linux·ssh·bash
SEO_juper12 天前
Node.js 重定向链检测工具:301 跳了几跳、有没有成环,一次看清
xml·开发语言·python·node.js·json·bash
云计算练习生12 天前
什么是 Bash?Linux 默认 Shell 的核心功能
linux·操作系统·bash·shell·命令解释器
qetfw14 天前
Bash 函数与流程控制:read、if、for、case 验证
linux·前端·javascript·bash
qetfw15 天前
Bash 基础:脚本执行、引号与命令替换验证
linux·开发语言·chrome·bash
qetfw16 天前
Bash 变量:export、位置参数与默认值展开验证
linux·开发语言·chrome·bash
ZYH_060116 天前
rhcsa课程复习题
服务器·bash