Rocky Linux 9.4 与 CentOS 7.9 虽然都源自 Red Hat Enterprise Linux (RHEL) 的生态,但由于它们处于完全不同的生命周期阶段(CentOS 7 基于 RHEL 7,Rocky 9 基于 RHEL 9),两者在包管理器、初始化系统、网络管理、文件系统默认配置以及内核特性上存在显著差异。
以下是核心命令区别的详细对比分析:
1. 软件包管理工具 (Package Manager)
这是最直观的区别。CentOS 7 使用 yum,而 Rocky 9 引入了 dnf 作为默认工具(虽然 yum 命令通常仍作为软链接存在,但底层逻辑已变)。
| 功能 | CentOS 7.9 (YUM) | Rocky Linux 9.4 (DNF) | 备注 |
|---|---|---|---|
| 安装软件 | yum install <pkg> |
dnf install <pkg> |
DNF 支持更好的依赖解析和并行下载 |
| 搜索软件 | yum search <keyword> |
dnf search <keyword> |
语法基本一致 |
| 更新系统 | yum update |
dnf upgrade |
upgrade 是 DNF 推荐用法,处理更复杂 |
| 清理缓存 | yum clean all |
dnf clean all |
功能相同 |
| 历史操作 | yum history |
dnf history |
DNF 历史功能更强大 |
| 模块管理 | 无原生支持 | dnf module list/enable/disable |
Rocky 9 引入模块化概念,用于控制 Python, PHP 等版本 |
注意:在 Rocky 9 中,你仍然可以输入
yum,它会自动调用dnf,但在脚本中建议显式使用dnf以适配未来变化。
2. 服务管理与初始化 (Systemd vs SysVinit)
CentOS 7 已经全面转向 systemd,Rocky 9 继续使用 systemd,因此启动服务的命令基本一致。但是,Rocky 9 对某些服务的命名和状态检查更加严格或标准化。
-
通用命令(两者相同):
systemctl start nginxsystemctl enable sshdsystemctl status firewalld
-
细微差别:
- Firewall:CentOS 7 默认可能未安装或未开启
firewalld(取决于安装选项),Rocky 9 默认开启且配置更严格。 - NetworkManager:Rocky 9 完全依赖 NetworkManager 进行网络管理,不再推荐使用传统的
/etc/sysconfig/network-scripts/下的脚本(如ifcfg-eth0)来管理网络,除非手动启用兼容性模式。
- Firewall:CentOS 7 默认可能未安装或未开启
3. 网络配置命令 (Network Management)
这是从 CentOS 7 迁移到 Rocky 9 时最容易“踩坑”的地方。
| 场景 | CentOS 7.9 | Rocky Linux 9.4 | 说明 |
|---|---|---|---|
| 传统方式 | ifup eth0 / ifdown eth0 |
已废弃/不推荐 | 需配合 NetworkManager 使用 |
| 配置文件位置 | /etc/sysconfig/network-scripts/ifcfg-<iface> |
默认禁用 | 若强行使用会报错,需创建 .conf 文件 |
| 推荐配置工具 | nmtui / nmcli |
nmcli (唯一官方推荐) |
必须使用 nmcli 修改 IP、网关、DNS |
| 查看 IP | ip addr 或 ifconfig |
ip addr (ifconfig 需安装 net-tools) |
ifconfig 在新版中默认不可用 |
| 防火墙端口 | firewall-cmd --add-port=... |
firewall-cmd --add-port=... |
语法一致,但 Rocky 9 默认区域为 public |
Rocky 9 网络配置示例 (nmcli):
# 修改静态 IP
sudo nmcli con mod "Wired connection 1" ipv4.addresses 192.168.1.100/24
sudo nmcli con mod "Wired connection 1" ipv4.gateway 192.168.1.1
sudo nmcli con mod "Wired connection 1" ipv4.dns "8.8.8.8"
sudo nmcli con mod "Wired connection 1" ipv4.method manual
sudo nmcli con up "Wired connection 1"
4. 文件系统与磁盘管理
Rocky 9 默认使用 XFS 文件系统(CentOS 7 也是 XFS,但分区策略不同),且引入了 LVM 的新特性。
-
扩容文件系统:
- CentOS 7:
xfs_growfs /dev/mapper/centos-root - Rocky 9: 同样使用
xfs_growfs,但必须先确保 LVM 卷已扩展。 - 关键区别:Rocky 9 更强调先扩容物理卷 (
pvresize) 再扩容逻辑卷 (lvextend),最后才是文件系统。如果步骤顺序不对,可能会遇到报错。
- CentOS 7:
-
挂载点:
- Rocky 9 默认将
/boot单独分区,且对/var或/home的挂载策略更灵活,部分旧脚本假设根目录包含所有数据可能会导致权限问题。
- Rocky 9 默认将
5. 用户与权限管理
- Sudo 配置:
- 两者都使用
visudo编辑/etc/sudoers。 - 区别:Rocky 9 默认禁用了 root 用户的 SSH 登录(即使安装了密码),强制要求通过
su -或sudo提权。CentOS 7 在某些最小化安装中可能允许 root 直接登录(取决于PermitRootLogin设置)。
- 两者都使用
- SELinux:
- 两者默认开启 SELinux。
- 区别:Rocky 9 的 SELinux 策略更严格,且默认使用
targeted策略。如果遇到应用无法启动,排查audit.log的逻辑与 CentOS 7 类似,但上下文标签(Contexts)的生成规则可能因新内核而改变。
6. 其他重要差异
A. Python 版本
- CentOS 7: 默认 Python 2.7 (已停止维护),Python 3 需要额外安装或仅作为
python3命令存在。 - Rocky 9: 默认 Python 3.9,没有 Python 2。
- 影响:如果你运行旧版的 Python 2 脚本,在 Rocky 9 上会直接报错。你需要使用
pip3或python3来运行脚本。
- 影响:如果你运行旧版的 Python 2 脚本,在 Rocky 9 上会直接报错。你需要使用
B. 时间同步
- CentOS 7: 默认使用
chronyd(替代 ntpd)。 - Rocky 9: 默认使用
chronyd,但配置路径和日志略有不同,且默认开启 NTP 自动同步。
C. 容器技术
- CentOS 7: 主要支持 Docker (CE)。Podman 是实验性或第三方。
- Rocky 9: Podman 是默认的容器引擎(非 root 运行),Docker 需要通过
dnf install docker-ce手动安装,且 Podman 与 Docker 命令兼容(别名docker指向podman是可选配置)。
总结与迁移建议
| 特性 | CentOS 7.9 | Rocky Linux 9.4 | 迁移注意事项 |
|---|---|---|---|
| 包管理 | YUM | DNF | 脚本中的 yum 改为 dnf;注意 Module 管理 |
| 网络配置 | ifcfg 脚本 | NMCLI | 停止使用 /etc/sysconfig/network-scripts/ |
| Python | v2.7 / v3.x | v3.9+ | 需重写 Python 2 代码 |
| 容器 | Docker | Podman (首选) | 习惯使用 podman 命令 |
| SSH Root | 视配置而定 | 默认禁止 | 必须配置 sudo 或 SSH Key |
| 内核 | 3.10 | 5.14+ | 新硬件驱动支持更好,旧内核特性移除 |
核心结论:
如果你是从 CentOS 7 迁移到 Rocky 9,不要直接复制粘贴旧的系统命令脚本。重点需要重构的是网络配置脚本(改用 nmcli)、软件安装脚本(改用 dnf 并处理 Module)以及Python 相关的应用程序(升级至 Python 3)。对于常规的 systemctl 服务管理,大部分命令可以直接复用。
轻量云Cloud