Rocky Linux 9.4 与 CentOS 7.9 虽然都源自 RHEL(Red Hat Enterprise Linux)体系,但由于它们处于完全不同的时代(RHEL 7 vs RHEL 9),其底层架构、软件包管理工具、初始化系统以及网络配置方式发生了根本性变化。
以下是两者在核心命令和用法上的主要区别对比:
1. 软件包管理器 (Package Manager)
这是最显著的区别。CentOS 7 使用 yum,而 Rocky 9 强制使用 dnf(尽管 yum 命令通常作为 dnf 的别名存在,但底层逻辑已变)。
| 功能 | CentOS 7.9 (YUM) | Rocky Linux 9.4 (DNF) | 备注 |
|---|---|---|---|
| 安装软件 | yum install <pkg> |
dnf install <pkg> |
DNF 更快,依赖解析更智能 |
| 卸载软件 | yum remove <pkg> |
dnf remove <pkg> |
|
| 更新系统 | yum update |
dnf upgrade |
DNF 中 upgrade 是推荐写法 |
| 搜索软件 | yum search <name> |
dnf search <name> |
|
| 查看历史 | yum history |
dnf history |
DNF 支持更详细的历史回滚 |
| 清理缓存 | yum clean all |
dnf clean all |
|
| 组管理 | yum groupinstall |
dnf groupinstall |
语法一致,但底层不同 |
注意:在 Rocky 9 上,虽然输入
yum也能工作,但它只是dnf的一个软链接。建议直接使用dnf以获取最新特性(如模块流管理 Module Streams)。
2. 服务管理 (Systemd vs SysVinit)
CentOS 7 引入了 systemd,Rocky 9 继续使用 systemd,因此启动/停止服务的命令基本保持一致。
- 启动服务:
systemctl start <service> - 停止服务:
systemctl stop <service> - 设置开机自启:
systemctl enable <service> - 查看状态:
systemctl status <service> - 重启服务:
systemctl restart <service>
区别点:
- CentOS 7: 仍保留传统的
/etc/init.d/<service>脚本调用方式(如service httpd start),兼容性极好。 - Rocky 9: 依然兼容上述传统命令,但官方强烈建议统一使用
systemctl。某些旧的 init 脚本可能已被移除或标记为废弃。
3. 网络配置 (NetworkManager vs Network Scripts)
这是运维人员最容易“踩坑”的地方。
| 场景 | CentOS 7.9 | Rocky Linux 9.4 |
|---|---|---|
| 网络配置工具 | ifconfig, netstat, ip addr (需安装 net-tools)配置文件在 /etc/sysconfig/network-scripts/ifcfg-eth0 |
不再默认安装 ifconfig 和 netstat必须使用 ip addr, ss, nmcli配置文件在 /etc/NetworkManager/system-connections/ |
| 修改 IP 地址 | 直接编辑 /etc/sysconfig/network-scripts/ifcfg-xxx 文件然后运行 systemctl restart network |
不推荐手动编辑配置文件 推荐使用 nmcli 命令动态修改 |
| 常用命令 | service network restart |
nmcli connection reload |
Rocky 9 网络操作示例:
# 查看连接状态
nmcli con show
# 修改静态 IP (推荐方式)
nmcli con mod "enp1s0" ipv4.addresses "192.168.1.100/24"
ipv4.gateway "192.168.1.1"
ipv4.dns "8.8.8.8"
ipv4.method manual
# 应用更改
nmcli con up "enp1s0"
提示:如果在 Rocky 9 上习惯用 ifconfig,需要先安装 yum install net-tools,且不建议在生产环境长期使用。
4. 用户与权限管理
大部分命令通用,但权限机制有细微差别。
- sudoers 配置:
- CentOS 7: 通常直接编辑
/etc/sudoers(需visudo)。 - Rocky 9: 同样使用
visudo,但更推荐使用/etc/sudoers.d/目录下的独立文件来管理特定用户或组的权限,避免直接修改主文件。
- CentOS 7: 通常直接编辑
- SELinux:
- 两者都开启 SELinux。
- 关键区别:Rocky 9 的 SELinux 策略更严格。如果执行命令报错
Permission denied,在 CentOS 7 上可能只是警告,但在 Rocky 9 上可能需要检查上下文标签 (restorecon) 或使用setsebool调整策略,甚至临时关闭 (setenforce 0) 进行排查。
5. 文件系统与磁盘管理
- LVM 命令:
lvcreate,vgextend等 LVM 命令在两者中基本一致。 - 文件系统格式:
- CentOS 7: 默认通常是 XFS 或 EXT4。
- Rocky 9: 默认强制使用 XFS,且对 XFS 的特性利用更多(如在线扩容更灵活)。
- 挂载命令:
- 两者均使用
mount和umount。 - fstab 路径: 都是
/etc/fstab,但 Rocky 9 对 UUID 的识别和 fstab 的校验更加严格。
- 两者均使用
6. 其他重要差异
A. 时间同步 (Chrony vs NTP)
- CentOS 7: 默认使用
ntp服务 (ntpd)。 - Rocky 9: 默认使用
chrony(chronyd)。- 查看状态:
systemctl status chronyd - 查看时间源:
chronyc sources -v - 如果需要手动切换回 ntp,需要额外安装并配置,但官方推荐适应 chrony。
- 查看状态:
B. 容器与镜像
- CentOS 7: 原生支持 Docker,Podman 需要额外安装。
- Rocky 9: 原生集成 Podman,Docker 不再是默认组件(虽然可以安装,但 Podman 是首选,因为它无守护进程,更安全)。
- 命令类似:
podman run ...替代docker run ... - 注意:
podman命令通常也映射了docker别名,或者你可以创建符号链接,但行为细节(如 rootless 模式)有所不同。
- 命令类似:
C. 语言版本
- CentOS 7: Python 2.7 (默认), Python 3.6+。
- Rocky 9: Python 3.9 (默认)。
- 如果你运行旧版 Python 2 编写的脚本,在 Rocky 9 上会直接报错。你需要显式安装
python2包或重写脚本。
- 如果你运行旧版 Python 2 编写的脚本,在 Rocky 9 上会直接报错。你需要显式安装
总结迁移建议
如果您是从 CentOS 7 迁移到 Rocky 9,请重点关注以下三点:
- 命令替换:将所有的
yum视为dnf,将ifconfig/netstat替换为ip/ss,将ntp相关操作改为chrony。 - 网络配置:放弃手动编辑
ifcfg-*文件的习惯,学习并使用nmcli进行网络管理。 - 环境适配:检查所有自动化脚本中的 Python 版本,确保不再依赖 Python 2;同时注意 SELinux 策略对程序运行的限制可能比 CentOS 7 更严。
虽然大部分基础命令(如 ls, grep, tar, ssh)完全相同,但网络、包管理和容器化领域的差异最大,迁移前务必进行测试。
CLOUD云计算