聚焦:系统资源监控、性能排查、安全巡检 适用:Ubuntu 20.04/22.04/24.04(多数命令通用于其他 Linux 发行版)


目录

  1. 系统概览

  2. CPU 相关

  3. 内存相关

  4. 磁盘与 IO

  5. 网络相关

  6. 进程管理

  7. 安全巡检

  8. 日志排查

  9. 用户与权限

  10. 防火墙与端口

  11. 系统更新与软件包

  12. 定时任务与服务管理

  13. 常用一键排查组合


1. 系统概览

uname -a                # 内核、系统架构信息
hostnamectl              # 主机名、系统版本、内核版本
lsb_release -a           # 发行版详细信息
uptime                   # 运行时长、负载均值(1/5/15分钟)
w                        # 当前登录用户及负载
neofetch                 # 系统信息可视化(需安装)
timedatectl              # 系统时间、时区、NTP同步状态

负载判断技巧uptime 中的三个数字代表过去 1/5/15 分钟平均负载,若持续高于 CPU 核心数,说明系统过载。


2. CPU 相关

top                      # 实时进程与资源占用(按 q 退出,按 1 显示每个核心)
htop                     # top 的增强版,交互更友好(需安装:apt install htop)
mpstat -P ALL 1          # 每个 CPU 核心的使用率,1秒刷新(需装 sysstat)
vmstat 1 5               # 每秒采样一次,共5次,看 CPU/内存/IO 综合状况
nproc                    # 显示CPU核心数
lscpu                    # CPU 详细架构信息(型号、核心数、缓存等)
sar -u 1 5               # CPU 使用率历史统计(需装 sysstat)

关注指标

  • %us(用户态)过高 → 应用计算密集

  • %sy(系统态)过高 → 系统调用/中断频繁,可能是IO或网络问题

  • %wa(等待IO)过高 → 磁盘瓶颈

  • load average 远超核心数 → CPU 或 IO 过载


3. 内存相关

free -h                  # 内存/交换分区使用情况(-h 人类可读单位)
cat /proc/meminfo         # 更详细的内存数据
vmstat -s                 # 内存统计摘要
smem -tk                  # 按进程展示实际内存占用(比 ps 更准,需安装)
watch -n 1 free -h        # 每秒刷新内存使用情况
ps aux --sort=-%mem | head -10   # 按内存占用排序前10进程

关注指标

  • available 远小于 total → 内存紧张

  • swap 使用持续增长 → 内存不足,出现频繁换页会拖慢性能

  • Buffer/cache 占用高是正常现象,不代表内存紧张(Linux 会自动回收)


4. 磁盘与 IO

df -h                     # 磁盘分区使用情况
du -sh /path/*            # 目录/文件大小统计(* 表示某目录下所有项)
du -sh /* 2>/dev/null | sort -rh | head -10   # 找出占用最大的顶层目录
lsblk                     # 查看块设备/分区结构
iostat -x 1 5             # 磁盘IO详细统计(需装 sysstat)
iotop                     # 实时查看每个进程的磁盘IO(需安装,通常需sudo)
ncdu /path                # 交互式磁盘占用分析工具(强烈推荐,需安装)
smartctl -a /dev/sda       # 硬盘健康状态检测(需装 smartmontools)
fdisk -l                  # 查看磁盘分区表(需sudo)

关注指标

  • df -h 中某分区使用率超过 85% 需要关注,超过 95% 需紧急处理

  • iostat%util 接近 100% 说明磁盘IO已成为瓶颈

  • SMART 状态异常需尽快更换硬盘


5. 网络相关

ip addr                   # 查看网卡与IP地址(新版,替代 ifconfig)
ip route                  # 查看路由表
ss -tulnp                 # 查看所有监听端口及对应进程(替代 netstat)
ss -s                     # 网络连接统计摘要
netstat -antp             # 查看所有TCP连接详情(较老工具,多数系统需装 net-tools)
nload                     # 实时查看网络带宽占用(需安装)
iftop                     # 按连接查看实时带宽占用(需sudo,需安装)
ping -c 4 目标地址          # 测试连通性与延迟
traceroute 目标地址         # 追踪路由路径
mtr 目标地址                # ping + traceroute 结合的实时诊断工具(推荐)
curl -I https://example.com  # 查看HTTP响应头,测试站点可达性
dig 域名                   # DNS 查询
nslookup 域名               # DNS 查询(简单版)

关注指标

  • ss -tulnp 检查是否有不该开放的端口对外监听

  • 大量 ESTABLISHEDSYN_RECV 连接可能是异常流量或攻击征兆


6. 进程管理

ps aux                    # 所有进程详情
ps aux | grep 关键词        # 查找特定进程
pstree                    # 进程树结构展示
kill PID                  # 结束进程(默认发送SIGTERM,优雅终止)
kill -9 PID               # 强制结束进程(SIGKILL,无法被忽略)
killall 进程名              # 按名称结束所有匹配进程
nice -n 10 命令             # 以较低优先级启动进程
renice -n 10 -p PID        # 调整已运行进程的优先级
lsof -p PID                # 查看某进程打开的所有文件/连接
lsof -i :端口号              # 查看占用某端口的进程

7. 安全巡检

# 登录与认证
last -a                    # 最近登录记录(含来源IP)
lastb                      # 登录失败记录(需sudo,读取 btmp)
who                        # 当前登录用户
w                          # 当前登录用户及其活动

# 暴力破解检测
grep "Failed password" /var/log/auth.log | tail -50        # SSH失败登录尝试
grep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -rn | head -10
                            # 统计攻击来源IP排名

# fail2ban(推荐安装用于自动封禁暴力破解IP)
fail2ban-client status              # 查看运行状态
fail2ban-client status sshd         # 查看SSH防护详情(已封禁IP列表等)

# 系统完整性/异常排查
find / -mtime -1 -type f 2>/dev/null    # 查找过去24小时内被修改的文件
find / -perm -4000 -type f 2>/dev/null  # 查找所有 SUID 程序(潜在提权风险)
find / -nouser -o -nogroup 2>/dev/null  # 查找无主文件(可能是入侵痕迹)
rkhunter --check            # Rootkit 检测(需安装 rkhunter)
chkrootkit                  # 另一款 Rootkit 检测工具(需安装)
aide --check                # 文件完整性校验(需提前初始化数据库)

# 网络层面
ss -tulnp                   # 检查异常监听端口
netstat -antp | grep ESTABLISHED   # 查看当前建立的连接,排查异常外联

# SSH 安全配置检查
sudo sshd -T | grep -Ei "permitrootlogin|passwordauthentication"
                            # 检查是否禁用root远程登录、密码登录等

安全巡检建议清单

  • 定期检查 /var/log/auth.log 中的异常登录尝试

  • 确认 SSH 已禁用密码登录,仅允许密钥认证

  • 确认 root 远程登录已禁用(PermitRootLogin no

  • 定期运行 rkhunter / chkrootkit 检测 rootkit

  • 使用 fail2banufw 限制暴力破解

  • 关注 SUID 程序变化,防止提权漏洞

  • 检查 crontab 是否有未知的定时任务(见第12节)


8. 日志排查

journalctl -xe             # systemd 日志,-x 显示详细说明,-e 跳到末尾
journalctl -u 服务名 -f      # 实时跟踪某服务日志
journalctl --since "1 hour ago"   # 查看最近1小时日志
journalctl -p err          # 只看错误级别日志
tail -f /var/log/syslog     # 实时跟踪系统日志
tail -f /var/log/auth.log   # 实时跟踪认证日志(SSH登录等)
dmesg -T | tail -50         # 内核日志(硬件、驱动相关问题常见于此)
dmesg -T | grep -i error    # 查找内核报错
grep -i "out of memory" /var/log/syslog   # 排查OOM Killer是否触发

9. 用户与权限

whoami                     # 当前用户
id                         # 当前用户UID/GID及所属组
cat /etc/passwd             # 系统所有用户列表
cat /etc/group              # 系统所有用户组
sudo -l                    # 查看当前用户可执行的sudo权限
passwd 用户名                 # 修改用户密码
usermod -aG 组名 用户名        # 将用户加入某组
chage -l 用户名               # 查看密码有效期策略
deluser 用户名                # 删除用户

10. 防火墙与端口

# UFW(Ubuntu默认防火墙管理工具)
ufw status verbose          # 查看防火墙状态与规则
ufw allow 端口号/tcp          # 放行某端口
ufw deny 端口号               # 禁止某端口
ufw delete allow 端口号        # 删除某条规则
ufw enable / disable         # 启用/禁用防火墙

# iptables(更底层,UFW本质是对其封装)
iptables -L -n -v            # 查看当前规则(详细)
iptables -L -n --line-numbers  # 带行号,便于删除指定规则

# nmap(端口扫描,需自行安装,仅用于自查或授权环境)
nmap -sT -p- 本机IP            # 扫描本机所有开放端口,验证防火墙有效性

11. 系统更新与软件包

apt update                  # 更新软件源索引
apt upgrade                 # 升级已安装的软件包
apt list --upgradable       # 查看可升级的软件包列表
apt autoremove               # 清理不再需要的依赖包
dpkg -l                     # 列出所有已安装的软件包
dpkg -l | grep 关键词          # 查找是否安装某软件包
apt show 包名                # 查看软件包详细信息
unattended-upgrade --dry-run # 模拟自动安全更新(需安装unattended-upgrades)

安全建议:生产服务器建议配置 unattended-upgrades 自动安装安全补丁,降低已知漏洞暴露窗口。


12. 定时任务与服务管理

crontab -l                  # 查看当前用户的定时任务
crontab -e                  # 编辑当前用户的定时任务
cat /etc/crontab             # 查看系统级定时任务
ls /etc/cron.d/               # 查看系统级定时任务目录
systemctl list-units --type=service --state=running   # 查看所有运行中的服务
systemctl status 服务名        # 查看某服务详细状态
systemctl restart 服务名       # 重启某服务
systemctl enable 服务名        # 设置服务开机自启
systemctl list-unit-files --state=enabled   # 查看所有开机自启的服务

安全提示:入侵者常通过写入隐蔽的 crontab 任务维持持久化,定期检查 crontab -l(含root)及 /etc/cron.d/ 是否有陌生任务是重要的安全习惯。


13. 常用一键排查组合

# 快速资源总览(适合SSH进服务器第一时间执行)
echo "===== 系统负载 =====" && uptime && \
echo "===== 内存 =====" && free -h && \
echo "===== 磁盘 =====" && df -h && \
echo "===== 网络连接数 =====" && ss -s

# 找出CPU/内存占用最高的进程
ps aux --sort=-%cpu | head -10
ps aux --sort=-%mem | head -10

# 快速安全巡检
echo "===== 最近登录 =====" && last -a | head -10 && \
echo "===== 登录失败 =====" && grep "Failed password" /var/log/auth.log | tail -10 && \
echo "===== 监听端口 =====" && ss -tulnp && \
echo "===== SUID文件 =====" && find / -perm -4000 -type f 2>/dev/null

附:推荐安装的常用工具包

sudo apt install -y htop iotop ncdu sysstat net-tools nmap mtr fail2ban rkhunter smem

文档持续可按需扩展,建议结合 Prometheus + Grafana / Netdata 等工具做长期性能监控与可视化告警,本手册更适合应急排查与日常巡检场景。