对比 CentOS 环境差异,通常分场景,不同场景用的工具不一样。下面按最常见场景给你一个实用清单,从“最简单”到“最专业”。
cat /etc/redhat-release
uname -a
示例:
CentOS Linux release 7.9.2009 (Core)
3.10.0-1160.el7.x86_64
rpm -qa --sort > packages.txt
对比两台机器:
diff packages_A.txt packages_B.txt
或:
yum list installed | awk '{print $1}' | sort > yum_installed.txt
dnf list installed | awk '{print $1}' | sort > dnf_installed.txt
env | sort > env.txt
对比:
diff env_A.txt env_B.txt
指定用户:
su - username -c "env" | sort
sysctl -a | sort > sysctl.txt
对比:
diff sysctl_A.txt sysctl_B.txt
systemctl list-units --type=service --state=running > services.txt
对比:
diff services_A.txt services_B.txt
ip addr
ip route
cat /etc/resolv.conf
防火墙:
firewall-cmd --list-all
iptables -L -n
把环境当代码管理:
git init
git add .
git commit -m "env snapshot"
之后对比:
git diff
适合:
/etcdiff -r /etc/old /etc/new
| 项目 | CentOS 7 | CentOS 8 / Stream |
|---|---|---|
| 包管理 | yum | dnf |
| 初始化 | SysV | systemd |
| 内核 | 3.10 | 4.x+ |
| Python | 2.7 | 3.x |
| nftables | ❌ | ✅ |
yum install etckeeper
etckeeper init
etckeeper commit "init"
之后任何配置变更都可对比。
ansible all -m setup > facts.json
rpm -qa | sort > base.txt
用于:
#!/bin/bash
rpm -qa --sort > packages.txt
env | sort > env.txt
sysctl -a | sort > sysctl.txt
systemctl list-units --type=service --state=running > services.txt
| 场景 | 重点对比 |
|---|---|
| 程序只在一台能跑 | env、lib、rpm |
| 网络不稳定 | sysctl、防火墙 |
| 升级后出问题 | rpm、systemd、内核 |
| 性能差异 | ulimit、sysctl |
你可以直接告诉我:
我可以给你定制一套对比脚本或检查清单。