聚焦:系统资源监控、性能排查、安全巡检 适用:Ubuntu 20.04/22.04/24.04(多数命令通用于其他 Linux 发行版)
目录
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检查是否有不该开放的端口对外监听大量
ESTABLISHED或SYN_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使用
fail2ban或ufw限制暴力破解关注 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 等工具做长期性能监控与可视化告警,本手册更适合应急排查与日常巡检场景。