Rocky Linux 9.4 与 CentOS 7.9 虽然都源自 Red Hat Enterprise Linux (RHEL) 体系,但由于底层架构、软件版本和系统初始化方式的巨大差异,两者在命令使用上存在显著区别。
核心差异概览:
- 内核与基础工具:CentOS 7 基于较旧的内核(3.10)和 GNU Coreutils 2.x;Rocky 9 基于较新的内核(5.14+)和 Coreutils 8.x。
- 包管理器:CentOS 7 使用
yum;Rocky 9 默认使用dnf(虽然yum是软链接,但行为不同)。 - 网络管理:CentOS 7 依赖
network-scripts和ifconfig;Rocky 9 强制使用NetworkManager和nmcli/ip。 - 系统初始化:CentOS 7 使用
systemd(兼容 SysVinit);Rocky 9 完全基于systemd且移除了许多旧服务脚本。 - 安全机制:Rocky 9 默认开启 SELinux 更严格的策略,且不再支持 Python 2。
以下是具体的命令对比和使用场景说明:
1. 软件包管理 (Package Management)
这是最直观的区别。虽然 Rocky 9 保留了 yum 命令作为 dnf 的别名,但在某些高级功能或错误处理上,dnf 的行为更为现代。
| 功能 | CentOS 7.9 (yum) |
Rocky Linux 9.4 (dnf) |
备注 |
|---|---|---|---|
| 安装软件 | yum install nginx |
dnf install nginx |
推荐直接使用 dnf |
| 更新系统 | yum update |
dnf upgrade |
upgrade 比 update 更智能,能处理依赖冲突 |
| 清理缓存 | yum clean all |
dnf clean all |
行为一致 |
| 搜索软件 | yum search nginx |
dnf search nginx |
结果排序逻辑略有不同 |
| 事务模拟 | 无原生支持 | dnf distro-sync --downloadonly |
dnf 支持更多预检操作 |
| 历史操作 | yum history |
dnf history |
dnf 显示更详细的时间线和资源占用 |
注意:在 Rocky 9 中,虽然输入
yum也能工作,但它实际上是调用dnf。如果脚本中硬编码了特定的yum行为(如某些旧版插件),可能会遇到兼容性警告。
2. 网络配置 (Network Configuration)
这是迁移中最容易出问题的地方。CentOS 7 默认使用传统的 network-scripts 包,而 Rocky 9 默认已移除该包,强制使用 NetworkManager。
| 功能 | CentOS 7.9 | Rocky Linux 9.4 | 替代方案/注意事项 |
|---|---|---|---|
| 查看 IP | ifconfig eth0 |
ip addr show eth0 |
ifconfig 在 RHEL 9 中通常不可用,需用 ip |
| 修改 IP | 编辑 /etc/sysconfig/network-scripts/ifcfg-eth0 |
使用 nmcli |
必须使用 nmcli 或 nmtui |
| 重启网络 | service network restart |
systemctl restart NetworkManager |
network 服务已废弃 |
| 防火墙 | iptables / firewall-cmd |
firewalld (默认) |
语法基本一致,但 iptables 需手动安装 iptables-services |
| 持久化规则 | 编辑 iptables 文件 |
firewall-cmd --permanent |
firewalld 是动态管理的 |
示例:设置静态 IP
- CentOS 7: 编辑
/etc/sysconfig/network-scripts/ifcfg-ens33然后重启 network 服务。 - Rocky 9:
nmcli con mod "System ens33" ipv4.addresses 192.168.1.10/24 nmcli con mod "System ens33" ipv4.gateway 192.168.1.1 nmcli con mod "System ens33" ipv4.dns "8.8.8.8" nmcli con mod "System ens33" ipv4.method manual nmcli con up "System ens33"
3. 系统服务管理 (System Services)
Rocky 9 更加严格地遵循 systemd 规范,移除了许多旧的 SysVinit 兼容脚本。
| 功能 | CentOS 7.9 | Rocky Linux 9.4 | 备注 |
|---|---|---|---|
| 启动服务 | service httpd start |
systemctl start httpd |
service 命令在 RHEL 9 中可能缺失或仅做简单转发 |
| 开机自启 | chkconfig httpd on |
systemctl enable httpd |
chkconfig 在 Rocky 9 中已被标记为过时,建议改用 systemctl |
| 查看状态 | service httpd status |
systemctl status httpd |
输出格式完全不同 |
| 日志查看 | tail -f /var/log/messages |
journalctl -f |
推荐使用 journalctl,messages 日志可能不存在 |
4. 用户与权限管理
- Sudo 配置:Rocky 9 默认使用
visudo编辑/etc/sudoers,且对sudo的日志记录更严格。 - Python 环境:
- CentOS 7: 默认自带 Python 2.7 (
python) 和 Python 3.6 (python3)。 - Rocky 9: 彻底移除了 Python 2。默认只有 Python 3.9 (
python3)。如果你运行旧脚本调用了python命令,会直接报错command not found,必须显式指定python3或安装兼容层。
- CentOS 7: 默认自带 Python 2.7 (
5. 其他关键差异点
-
文件系统与磁盘管理:
- CentOS 7 常用
fdisk+mkfs.ext4。 - Rocky 9 默认文件系统是 XFS,且强烈建议使用
lsblk,df -h,btrfs(可选) 等现代工具。LVM 命令 (lvcreate,vgextend) 基本通用,但部分输出字段顺序变了。
- CentOS 7 常用
-
SSH 安全:
- Rocky 9 默认 SSH 配置更严格,例如禁止 root 直接登录(PermitRootLogin no),且默认禁用弱加密算法。CentOS 7 的配置相对宽松。
-
时间同步:
- CentOS 7: 默认使用
chronyd(NTP 客户端)。 - Rocky 9: 同样使用
chronyd,但配置文件路径和行为有细微调整,且更倾向于与 NTP 服务器保持严格同步。
- CentOS 7: 默认使用
总结与建议
如果您正在从 CentOS 7.9 迁移到 Rocky Linux 9.4,请注意以下几点:
- 脚本改造:检查所有 Shell 脚本,将
python替换为python3,将yum视为dnf,将ifconfig替换为ip addr,将service替换为systemctl。 - 网络配置:不要尝试复制
/etc/sysconfig/network-scripts/下的配置文件,必须在 Rocky 9 上使用nmcli重新配置网络。 - 防火墙:确认是否仍在使用
iptables规则,如果有,需要将其转换为firewalld规则,或者安装iptables-services并切换到传统模式(不推荐)。 - 文档查阅:参考官方文档时,务必确认是针对 RHEL 8/9 系列的,因为 RHEL 7 的很多旧文档在 Rocky 9 上已失效。
总体而言,Rocky Linux 9.4 的命令体系更加现代化、标准化,虽然学习曲线稍陡,但长期维护性和安全性远高于 CentOS 7.9。
CLOUD技术博