服务器教程 · 2025年5月18日

一键完成Linux系统全面巡检的Shell脚本实战

 

引言

在日常的运维工作中,快速获取服务器当前状态是一项非常重要的工作。为了提升效率,我们可以借助一个简单但功能齐全的Shell脚本,对Linux系统进行自动化巡检,涵盖系统性能、网络配置、安全状况、服务运行情况等多个维度,尤其适用于需要快速掌握服务器运行状态的技术人员和服务器管理员。

对于部署在美国地区的数据中心的用户,这类脚本在排查网络故障或资源瓶颈时尤其重要。若您正在考虑升级服务器性能或更换机房,不妨了解一下高性能、低延迟的美国服务器解决方案,助您实现系统高可用运维目标。


一、Linux巡检范围概述

本脚本涵盖了以下几个主要的系统信息模块:

  • 系统基本信息(主机名、操作系统、内核等)
  • CPU负载和核心信息
  • 内存使用率和空闲情况
  • 磁盘挂载点及占用情况
  • 网络接口与连接状态
  • 关键服务运行状态(如SSH、MySQL、Nginx等)
  • 基础安全检查(用户、登录策略、SSH配置等)
  • 登录与系统日志
  • 性能分析排行(按内存和CPU占用)

二、Shell巡检脚本内容详解

脚本保存在 /opt/linux_inspection.sh,内容如下:

#!/bin/bash

LOG_FILE="/opt/巡检报告_$(date +%F_%T).log"

echo "系统巡检报告" > $LOG_FILE
echo "生成时间: $(date)" >> $LOG_FILE

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

log "=================[ 系统基本信息 ]================="
log "主机名: $(hostname)"
log "操作系统: $(grep PRETTY_NAME /etc/os-release | cut -d= -f2 | tr -d '\"')"
log "内核版本: $(uname -r)"
log "系统启动时间: $(uptime -s)"
log "系统运行时长: $(uptime -p)"
log "当前时间: $(date)"

log "=================[ CPU 信息 ]================="
log "CPU 型号: $(lscpu | grep 'Model name' | awk -F: '{print $2}' | sed 's/^ *//')"
log "逻辑核数: $(nproc)"
log "CPU 使用率: $(top -bn1 | grep '%Cpu' | awk '{print $2}')%"

log "=================[ 内存使用情况 ]================="
free -h | tee -a $LOG_FILE
log "内存使用占比: $(free | awk '/Mem/{printf("%.2f", $3/$2 * 100)}')%"

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

log "=================[ 网络配置 ]================="
log "本地 IP: $(hostname -I)"
log "默认网关: $(ip route | grep default | awk '{print $3}')"
ifconfig | tee -a $LOG_FILE
ss -tunlp | tee -a $LOG_FILE

log "=================[ 服务状态 ]================="
for service in sshd nginx mysqld; do
    systemctl is-active $service &>/dev/null && status="运行中" || status="未运行"
    log "$service 服务状态: $status"
done

log "=================[ 安全审计 ]================="
grep -E "^#?PermitRootLogin|^#?PasswordAuthentication" /etc/ssh/sshd_config | tee -a $LOG_FILE
log "普通用户列表:"
awk -F: '{if ($3 >= 1000) print $1}' /etc/passwd | tee -a $LOG_FILE

log "=================[ 登录信息 ]================="
who | tee -a $LOG_FILE
last -a | head -10 | tee -a $LOG_FILE

log "=================[ 系统日志摘要 ]================="
grep "Failed password" /var/log/auth.log | tail -10 | tee -a $LOG_FILE || log "未检测到登录失败记录"

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

log "============= 巡检完成,报告保存在: $LOG_FILE ============="

三、如何使用该脚本

  1. 赋予执行权限:
chmod +x /opt/linux_inspection.sh
  1. 手动运行:
sh /opt/linux_inspection.sh
  1. 定时执行(推荐):

使用 crontab -e 添加计划任务,例如每天早上8点自动运行:

0 8 * * * /bin/sh /opt/linux_inspection.sh
  1. 查看日志:

脚本执行完成后,可使用以下命令查看巡检日志:

less /opt/巡检报告_2025-01-10_12:41:26.log

四、结合高性能美国云服务器,提升系统运维效率

自动化巡检脚本可帮助技术团队高效掌握服务器运行状态,若结合美国vps美国云服务器部署,可以在保证访问速度的同时增强系统稳定性。特别是对中大型项目而言,选用高带宽、低延迟的美国服务器将极大提升业务可靠性,体验企业级计算资源支持!