走啊走
加油

Rocky Linux 9.4与centos7.9的命令区别?

服务器价格表

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
不再默认安装 ifconfignetstat
必须使用 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/ 目录下的独立文件来管理特定用户或组的权限,避免直接修改主文件。
  • 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 的特性利用更多(如在线扩容更灵活)。
  • 挂载命令:
    • 两者均使用 mountumount
    • 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 包或重写脚本。

总结迁移建议

如果您是从 CentOS 7 迁移到 Rocky 9,请重点关注以下三点:

  1. 命令替换:将所有的 yum 视为 dnf,将 ifconfig/netstat 替换为 ip/ss,将 ntp 相关操作改为 chrony
  2. 网络配置:放弃手动编辑 ifcfg-* 文件的习惯,学习并使用 nmcli 进行网络管理。
  3. 环境适配:检查所有自动化脚本中的 Python 版本,确保不再依赖 Python 2;同时注意 SELinux 策略对程序运行的限制可能比 CentOS 7 更严。

虽然大部分基础命令(如 ls, grep, tar, ssh)完全相同,但网络、包管理和容器化领域的差异最大,迁移前务必进行测试。