CentOS 7 和 CentOS 8 是基于 Red Hat Enterprise Linux(RHEL)的不同版本开发的,它们在命令行工具、系统架构和服务管理等方面有显著区别。以下是两者之间一些主要的命令和功能差异:
? 一、系统初始化与服务管理
| 功能 |
CentOS 7 |
CentOS 8 |
| 初始化系统 |
SysVinit + systemd 混合使用 |
完全使用 systemd |
| 启动/停止服务 |
service <servicename> start/stop |
推荐使用 systemctl 命令 |
| 管理服务 |
systemctl start/stop/status servicename |
同样使用 systemctl,但部分服务名称或结构变化 |
| 默认运行级别设置 |
systemctl set-default multi-user.target 或 graphical.target |
同上 |
| 查看运行级别 |
runlevel |
同上 |
| 防火墙工具 |
iptables, firewalld |
主要使用 nftables,默认仍用 firewalld |
?️ 二、软件包管理器
| 功能 |
CentOS 7 |
CentOS 8 |
| 包管理器 |
yum |
dnf(向下兼容 yum 命令) |
| 安装软件包 |
yum install package_name |
dnf install package_name 或 yum install |
| 升级系统 |
yum update |
dnf upgrade 或 yum update |
| 清除缓存 |
yum clean all |
同上 |
| 列出已启用仓库 |
yum repolist |
dnf repolist |
| 模块化支持 |
❌ 不支持 |
✅ 支持 dnf module(用于选择不同版本的软件) |
?️ 三、网络配置工具
| 功能 |
CentOS 7 |
CentOS 8 |
| 网络配置工具 |
ifconfig, net-tools 默认安装 |
ip 命令为主,ifconfig 可通过安装 net-tools 使用 |
| 网络管理 |
network.service |
使用 NetworkManager(推荐) |
| 修改 IP 地址 |
手动编辑 /etc/sysconfig/network-scripts/ifcfg-<interface> |
使用 nmcli 或 nmtui 工具更方便 |
| DNS 配置 |
/etc/resolv.conf 可直接修改 |
推荐通过 NetworkManager 或 nmcli 设置 |
? 四、用户与权限管理
| 功能 |
CentOS 7 |
CentOS 8 |
| 用户添加 |
useradd username |
同上 |
| 密码设置 |
passwd username |
同上 |
| sudo 权限配置 |
编辑 /etc/sudoers 或添加文件到 /etc/sudoers.d/ |
同上 |
| 默认 Python 版本 |
Python 2.x(可选安装 Python 3) |
默认 Python 3(Python 2 需手动安装) |
? 五、文件系统与磁盘管理
| 功能 |
CentOS 7 |
CentOS 8 |
| 默认文件系统 |
XFS(也支持 ext4) |
XFS 为主 |
| LVM 工具 |
支持 |
支持 |
| 加密安装选项 |
支持 |
支持 |
| 磁盘分区工具 |
fdisk, parted |
同上,还支持 lsblk, blkid 等 |
? 六、容器与虚拟化支持
| 功能 |
CentOS 7 |
CentOS 8 |
| Docker 支持 |
社区版可用,需第三方源 |
更好的支持,内置容器工具如 podman, buildah |
| 虚拟化支持 |
KVM/QEMU 基础支持 |
更完善的虚拟化支持,集成更好的工具链 |
| 容器工具 |
需要额外安装 Docker |
自带 podman, skopeo, cri-o 等工具 |
? 七、其他常见命令差异
| 功能 |
CentOS 7 |
CentOS 8 |
| Python 版本 |
默认 Python 2.7 |
默认 Python 3.6+ |
python 命令 |
直接可用 |
需要手动链接或安装 Python 2 |
firewall-cmd |
支持 |
支持,但底层由 nftables 实现 |
logind |
支持多会话管理 |
支持,功能更完善 |
chronyd vs ntpd |
推荐使用 chronyd |
更推荐使用 chronyd,默认安装 |
| SELinux 工具 |
setsebool, getsebool 等 |
同上 |
✅ 总结对比表
| 项目 |
CentOS 7 |
CentOS 8 |
| 初始化系统 |
SysVinit + systemd |
完全使用 systemd |
| 包管理器 |
yum |
dnf(兼容 yum) |
| 默认 Python |
Python 2.x |
Python 3.x |
| 网络配置 |
ifconfig, network.service |
ip, NetworkManager |
| 容器支持 |
第三方 Docker |
内建 Podman、Buildah 等 |
| 防火墙 |
iptables/nftables |
nftables(默认) |
| 模块化软件支持 |
❌ 不支持 |
✅ 支持 DNF Modules |
| 用户界面 |
GNOME 3 Classic |
GNOME 3(更新版本) |
? 建议
- 如果你在做新项目,建议使用 CentOS Stream(或 Rocky Linux / AlmaLinux)8 或更高版本,以获得更好的安全性和现代特性。
- CentOS 7 的官方维护支持已于 2024 年 6 月 30 日结束,不建议继续用于生产环境。
- CentOS 8 的官方维护支持将持续到 2029 年。
如果你有具体的命令想知道在两个版本中的行为差异,可以告诉我,我可以详细说明某个命令的变化。