Linux 基础知识入门(RH104)

Linux 基础知识入门(RH104)

课程大纲

Linux 简介

定义并解释 Linux 的用途和 Linux 发行版。

Linux® 是一种免费使用和自由传播的类 UNIX 操作系统。由 Linus Torvalds 于 1991 年创建的开源操作系统(OS)。

定义和特点包括:
  • 开源模型:Linux 是使用开放源代码模型开发的,其源代码对公众开放,允许任何人查看、修改和分发。
  • 基于内核:狭义上,Linux 仅指代由 Linus Torvalds 于 1991 年开发的 Linux 内核。该内核是操作系统的核心部分,负责管理硬件资源并提供系统服务。
  • 类 UNIX 系统:Linux 的设计目标是成为 UNIX 操作系统的免费替代品,功能和接口与 UNIX 高度相似。
  • 发行版生态:用户通常使用的是“Linux 发行版”(如 Ubuntu、Red Hat、CentOS 等),这些发行版将 Linux 内核与各种系统软件、库、桌面环境和应用程序打包在一起,形成一个完整的操作系统。
  • 稳定性与安全性:Linux 以其高稳定性、安全性和灵活性而闻名,广泛应用于服务器环境、高性能计算、嵌入式设备(如智能手机、汽车)以及个人电脑等多种场景。
  • 全球协作:Linux 内核和相关的 GNU 组件及其他软件是由全球成千上万的开发者共同维护和更新的。 

Linux 的用途非常广泛,几乎涵盖了计算领域的各个方面。Linux 以其稳定性、安全性和灵活性而闻名,主要用途包括:

  • 服务器和数据中心:这是 Linux 最主要的用途。全球绝大多数网站、云计算服务(如 Amazon Web Services, Google Cloud Platform, Microsoft Azure)和企业级服务器都在使用 Linux。它具有强大的网络功能和高可靠性,非常适合运行关键业务应用和托管网站。
  • 云计算和虚拟化:Linux 是构建和运行云计算平台(如 OpenStack)和容器技术(如 Docker、Kubernetes)的基础操作系统。
  • 嵌入式设备:Linux 内核被广泛用于各种嵌入式系统中,例如:
    • 智能手机:最著名的例子是 Android,它基于定制的 Linux 内核。
    • 路由器:许多家用和企业级网络设备使用 Linux。
    • 智能电视、汽车娱乐系统、智能手表等。
  • 高性能计算(超级计算机):全球排名前几百位的超级计算机中,绝大多数都运行 Linux。其高效的资源管理能力使其成为科学研究和复杂计算的首选。
  • 桌面和个人电脑:虽然市场份额不如 Windows 或 macOS 高,但 Linux 提供了功能完善的桌面环境(如 GNOME、KDE),深受程序员、系统管理员和注重隐私的用户喜爱。
  • 开发工具和编程:Linux 提供了原生的开发环境,使得许多编程语言、工具链和开源软件的安装和使用更为便捷,是许多软件工程师的首选平台。
常见的 Linux 发行版
“发行版”(Distribution,简称 Distro)是将 Linux 内核与各种系统工具、软件库、桌面环境和应用程序捆绑在一起,形成一个完整的、可安装的操作系统。不同的发行版针对不同的使用场景和用户群体。
一些最受欢迎和广泛使用的发行版包括:
 
发行版名称目标用户/主要用途主要特点
Ubuntu 桌面用户、服务器、云计算 易于使用、界面友好、社区支持活跃,是许多新手的首选。
CentOS / RHEL 企业级服务器、数据中心 RHEL (Red Hat Enterprise Linux) 是商业版;CentOS (现以 CentOS Stream 形式存在) 是其社区版本,以稳定性、安全性和长期支持而闻名。
Debian 服务器、桌面用户、稳定性至上者 是许多其他发行版(包括 Ubuntu)的基础,以其极度稳定和庞大的软件包仓库而著称。
Fedora 桌面用户、开发者、创新者 作为 RHEL 的上游社区版,它提供最新的软件和技术,更新周期快。
SUSE / openSUSE 企业级服务器、桌面用户 SUSE Linux Enterprise 是企业版;openSUSE 是社区版,以其强大的配置管理工具 YaST 闻名。
Arch Linux 高级用户、DIY 爱好者 采用“滚动更新”模式,用户可以从零开始构建自己的系统,提供了极高的定制性。
Linux Mint 桌面用户、Windows 迁移用户 基于 Ubuntu/Debian,提供更传统的桌面布局和媒体支持,对新手非常友好。
Alpine Linux 容器环境、嵌入式设备 体积非常小巧,专注于安全性和效率,非常适合 Docker 等容器技术。
 
Linux 是一种功能强大、用途广泛的操作系统,其应用范围涵盖从大型企业服务器到小型嵌入式设备。不同的 Linux 发行版则是针对特定用户需求和场景定制的完整软件包。
主要分为商业支持版和社区维护版。  
 
面向企业/服务器
  • Red Hat Enterprise Linux (RHEL):最著名的商业企业级发行版,提供专业支持和认证,广泛用于关键业务环境。
  • CentOS:基于 RHEL 源代码构建的社区免费版本,常用于不需要商业支持的企业服务器。
  • SUSE Linux Enterprise Server (SLES):由 SUSE 公司开发的另一个主要的商业企业级发行版。
  • Ubuntu Server:由 Canonical 公司维护,在云计算和服务器领域非常流行,因其易用性和强大的社区支持而受到青睐。 
面向个人电脑/桌面用户
  • Ubuntu Desktop:最受欢迎的桌面 Linux 发行版之一,界面美观、用户友好,适合新手入门。
  • Linux Mint:基于 Ubuntu,以提供更类似 Windows 的操作体验而闻名,适合从 Windows 迁移过来的用户。
  • Fedora:由红帽赞助,是一个创新、快速更新的社区发行版,常作为 RHEL 的上游技术试验平台。
  • Debian:一个完全由社区维护、极其稳定的发行版,是 Ubuntu 和许多其他发行版的基础。
  • Arch Linux:一个“滚动更新”的发行版,为高级用户提供极高的定制性和控制权,但学习曲线较陡峭。
  • Manjaro:基于 Arch Linux,但提供了更简单的安装过程和预配置的桌面环境,兼顾易用性和 Arch 的优势。 

操作系统是指直接管理系统硬件和资源(例如 CPU、内存和存储)的软件。操作系统位于应用与硬件之间,负责在所有软件与执行工作的物理资源之间建立连接。

Linux 的设计与 UNIX 类似,每个基于 Linux 的操作系统都包含 Linux 内核(负责管理硬件资源)和一组软件包(构成操作系统的其余部分)。
Linux 操作系统的工作原理基于一个分层的架构,其核心是 Linux 内核 (Kernel)。内核充当硬件和软件之间的桥梁,管理系统资源并提供基本服务。 
Linux 的主要组件及其工作原理如下:
 
1. 硬件层 (Hardware Layer)
这是最底层,包含所有物理组件,如 CPU、内存 (RAM)、硬盘、输入/输出设备等。 
 
2. 内核 (The Kernel)
内核是操作系统的核心,直接与硬件交互。它的主要职责包括:
  • 进程管理:管理程序的生命周期(创建、调度和终止),高效分配 CPU 时间,允许多任务并行处理。
  • 内存管理:管理物理内存和虚拟内存,确保每个程序获得所需的内存空间,并防止程序之间互相干扰。
  • 设备管理:通过设备驱动程序促进操作系统与硬件组件(如存储设备、网卡)之间的通信。
  • 文件系统管理:组织和管理数据在存储设备上的存取,并实施权限控制。
  • 网络:处理网络协议栈(如 TCP/IP),实现网络通信功能。 
内核在受保护的内核空间 (Kernel Space) 中运行,具有直接访问硬件的权限,而用户应用程序则在独立的用户空间 (User Space) 中运行,以提高稳定性和安全性。 
 
3. 系统库 (System Libraries)
这些库包含预先编写好的代码,应用程序可以调用它们来实现特定任务,而无需直接编写与内核交互的复杂代码。它们实现了操作系统的大部分功能,并为应用程序访问内核功能提供了接口。 
 
4. Shell (命令解释器)
Shell 是用户与内核之间的接口。它是一个命令行解释器 (CLI),负责接收用户输入的命令,解释它们,并将请求传递给内核执行。当使用图形用户界面 (GUI) 时,图形服务器和桌面环境充当了类似的接口层。 
 
5. 系统工具和应用程序 (System Utilities & Applications)
这些是用户日常使用的程序和后台服务(守护进程 Daemons),例如文本编辑器、浏览器、打印服务等。它们依赖于系统库和内核提供的资源来运行。 
 
总结工作流程
当用户启动一个应用程序或输入一个命令时:
  1. 用户通过 Shell 或 GUI 界面发出请求。
  2. 请求被传递给相应的系统库或应用程序。
  3. 这些软件通过系统调用 (System Calls) 向内核请求硬件资源。
  4. 内核管理并协调硬件资源,执行所需的操作。
  5. 结果通过内核、系统库和 Shell/GUI 返回给用户。 
整个过程形成了一个高效、稳定且安全的系统,这也是 Linux 广泛应用于从手机到超级计算机的各种设备的原因。 
  • 内核:操作系统的基本组件。没有它,操作系统将无法运行。内核管理系统资源,并与硬件进行通信。它负责内存、进程和文件的管理。
  • 系统用户空间:系统级任务(例如配置和软件安装)的管理层。系统用户空间包括 shell(或称为命令行)、守护进程(在后台运行的进程)和桌面环境。
  • 应用:一种用于执行任务的软件。应用包括桌面工具、编程语言和多用户业务套件等各种软件。大多数 Linux 发行版都会提供一个中央数据库,用于搜索和下载其他应用。

Linux 是一款基于 GNU 通用公共许可证(GPL)发布的免费、开源操作系统。只要符合相应的许可条件,任何人都可以运行、研究、修改和重新分发源代码,甚至还可以销售修改后代码的副本。

红帽是开源社区中 Linux 内核和相关技术的主要贡献者之一。红帽® 工程师可以帮助改进功能、可靠性和安全性,确保您的基础架构在任何用例和工作负载下都能持续稳定地运行。

红帽企业 Linux 提供了一个标准操作环境,能让您的企业在各种环境中执行操作,为裸机、虚拟环境容器化环境,以及私有云和公共云中的各类业务应用提供支持。

访问 Linux 系统

与 GNOME 桌面交互,并查询终端环境。

使用操作系统时,主要通过两种方式之一向计算机下达命令:图形用户界面(GUI)或命令行(CLI)。

GUI 是指启动操作系统时可以看到并能与之交互的一切内容,例如菜单、窗口和桌面图标。更复杂的任务通常需要使用命令行,使用命令行可以直接访问计算机。

图形界面访问

本地/虚拟机控制台

在物理机或虚拟机控制台前操作,系统将显示 GNOME 登录屏幕。输入您的用户名和密码即可登录桌面。

远程访问:

  • VNC (Virtual Network Computing): 您可以配置 VNC 服务器以提供完整的远程桌面体验。
  • GNOME 远程登录:在 GNOME 设置中启用“屏幕共享”或“远程桌面”,并设置用户名和密码,然后使用兼容的远程桌面客户端(如 Connections 或 Remmina)连接。
  • Web 控制台 (Cockpit):RHEL 8 包含一个基于 Web 的管理界面 (Cockpit),可通过浏览器访问 https://your_server_ip:9090

命令行访SSH

本地/虚拟机控制台
在物理机或虚拟机控制台前,可以通过以下方式访问 CLI:
  • 登录控制台:
    • 在图形界面 (GUI) 下:登录到 GNOME 桌面后,打开“终端”(Terminal) 应用程序。您可以在“活动” (Activities) 菜单中搜索 "Terminal" 来找到它。
    • 在命令行模式 (CLI only) 下:系统启动后将直接显示一个文本登录提示符 (login:). 输入您的用户名和密码即可进入 Shell 提示符。
  • 使用虚拟控制台 (TTYs):
    • RHEL 8 提供了多个虚拟控制台。您可以使用键盘快捷键在它们之间切换:
      • Ctrl + Alt + F2 到 Ctrl + Alt + F6:切换到不同的文本模式控制台。
      • Ctrl + Alt + F1:通常用于返回图形登录界面或桌面会话。

远程访问 SSH (Secure Shell)

ssh username@server_ip_address
    • 从 GUI 切换到 CLI (虚拟终端):
      如果系统启动到图形界面 (GUI),可以使用键盘快捷键切换到不同的虚拟终端 (Virtual Terminals, VTs) 来访问 CLI:
      • 按下 Ctrl + Alt + F2 到 F6。通常 F2 用于 GUI,F3 到 F6 用于独立的 CLI 会话。
      • 将被要求输入用户名和密码。
      • 要返回图形界面,通常按 Ctrl + Alt + F2 或 Ctrl + Alt + F1
    • 在 GUI 中打开终端模拟器:
      如果已登录到图形桌面,可以通过以下方式打开一个终端窗口:
      • 按下键盘快捷键:Ctrl + Alt + T
      • 点击左上角的“Activities”菜单,然后在搜索框中输入“Terminal”,点击找到的终端图标。

在 Linux 中管理文件

使用图形化工具和命令行工具创建和修改文本文件,以及识别二进制文件。
在 Linux 中管理文件主要使用命令行工具,核心命令包括:ls(列出文件和目录)、cd(切换目录)、pwd(显示当前目录)、cp(复制)、mv(移动或重命名)和 rm(删除)、 cat 或 touch(创建文件)以及使用 mkdir 创建新目录,以及 rmdir 删除空目录。此外,管理文件权限(读 r、写 w、执行 x)是重要的一部分,可通过 chmod 命令实现。  
文件和目录管理命令
命令 功能
ls 列出目录内容
cd [目录] 切换当前工作目录
pwd 显示当前工作目录的绝对路径
mkdir [目录名] 创建一个新目录
rmdir [目录名] 删除一个空的目录
cp [源文件] [目标文件] 复制文件
mv [源文件] [目标文件] 移动文件或重命名文件
rm [文件名] 删除文件或目录
文件路径
  • 绝对路径: 从根目录 / 开始,例如 /home/user/Documents
  • 相对路径: 相对于当前工作目录的路径,例如 ../Pictures 表示上一级目录下的 Pictures 文件夹。 
其他实用命令
  • man [命令]: 查看特定命令的帮助文档,例如 man ls
  • vim 或 vi: 一个强大的文本编辑器,可以用来打开和编辑文件,也常用来查看文件编码格式。
  • set fileencoding: 在 vim 中查看或修改文件编码的命令。 
常见文件管理命令
    • 列出文件: 使用 ls 命令查看当前目录下的文件和子目录。结合 -l 参数可以显示详细信息,包括权限、所有者和大小等。
    • 改变目录: 使用 cd 命令导航到不同目录。例如,cd /home/user 会进入 /home/user 目录。
    • 创建文件:
      • 使用 cat > filename 命令创建文件并输入内容,完成后按 Ctrl+D 保存。
      • 使用 touch filename 命令可以创建一个空文件,或者更新现有文件的访问和修改时间。
    • 复制文件: 使用 cp 命令复制文件或目录。例如,cp file1 file2 会复制 file1 并命名为 file2
    • 移动和重命名: 使用 mv 命令移动文件,或者给文件重命名。例如,mv oldname newname 可以重命名文件。
    • 删除文件: 使用 rm 命令删除文件。例如,rm filename请谨慎使用此命令,因为它会永久删除文件。
  • 查看文件内容: 使用 cat 命令可以显示文件的全部内容。对于大文件,可以使用 less 或 more 命令进行分屏查看。 
文件权限管理
  • 查看权限: 使用 ls -al 命令可以查看文件的详细权限,包括读 (r)、写 (w) 和执行 (x) 权限。
  • 修改权限: 使用 chmod 命令来修改文件权限。
    • 数字模式: 例如,chmod 755 script.sh 将权限设置为 rwxr-xr-x
    • 符号模式: 例如,chmod u+x script.sh 增加所有者 (u) 的执行 (x) 权限。 
其他重要操作
  • 查找文件: 使用 find 命令可以在目录树中搜索文件,并根据多种标准进行匹配。
  • 压缩和解压缩: 使用 tar 命令来压缩或解压缩文件。
  • 文件搜索: 使用 grep 命令在文件内容中查找特定文本。
最常用的命令及其详细示例:
 
1. 查看文件和目录
ls 命令用于列出目录内容。
 
命令描述示例
ls 列出当前目录内容 ls
ls -l 长格式显示(权限、所有者、大小、日期等) ls -l
ls -a 显示包括隐藏文件(以 . 开头)在内的所有文件 ls -a
ls -lh 长格式并以人类可读的格式显示文件大小(如 KB, MB) ls -lh
ls -ltr 按修改时间倒序排列并显示详细信息 ls -ltr
 
2. 创建目录和文件
 
命令描述示例
mkdir 创建新目录 mkdir my_new_folder
touch 创建一个空文件或更新文件时间戳 touch my_file.txt
mkdir -p 递归创建多级目录 mkdir -p project/src/assets
echo 将文本输出重定向到文件 echo "Hello Linux" > greeting.txt
 
3. 复制文件和目录
cp 命令用于复制文件和目录。
 
命令描述示例
cp 复制文件 cp file1.txt file1_copy.txt
cp -r 递归复制目录及其内容 cp -r project/ backup_project/
cp -v 显示复制进度(详细模式) cp -v file2.txt /tmp/
cp -u 仅在源文件较新或目标文件不存在时复制 cp -u update.txt /data/
 
4. 移动和重命名文件
mv 命令用于移动文件或重命名文件(在同一目录下移动即为重命名)。
 
命令描述示例
mv 移动文件到另一个目录 mv file1.txt /tmp/
mv 重命名文件 mv oldname.txt newname.txt
mv 移动目录 mv my_folder /var/
 
5. 删除文件和目录
rm 命令用于删除文件或目录。
 
命令描述示例
rm 删除文件 rm unwanted_file.txt
rm -r 递归删除目录及其内容 rm -r unwanted_folder/
rm -rf 强制递归删除目录(请谨慎使用,不可恢复!) rm -rf sensitive_data/
rm -i 交互式删除,每次删除前询问确认 rm -i file.txt
 
6. 查看文件内容
 
命令描述示例
cat 查看整个文件内容 cat greeting.txt
less 分页查看大文件内容(使用空格键翻页,'q' 退出) less /var/log/messages
head 仅查看文件开头几行(默认前 10 行) head -n 5 /etc/passwd
tail 仅查看文件末尾几行(默认后 10 行) tail -n 5 /etc/passwd
tail -f 实时监控文件末尾的新增内容(用于日志监控) tail -f /var/log/syslog
 
7. 管理文件权限和所有权
在 Linux 中,文件有所有者 (Owner)、组群 (Group) 和其他人 (Others) 的权限控制。
  • chmod:更改文件权限。权限可以用数字(如 755)或符号(如 u+x)表示。
    • 示例 (数字表示法):给予所有者读/写/执行权限,组群和其他人读/执行权限:
      chmod 755 script.sh
    • 示例 (符号表示法):给所有者增加执行权限:
      chmod u+x script.sh
  • chown:更改文件所有者和/或组群。
    • 示例:将文件所有者更改为 bob
      sudo chown bob file.txt
    • 示例:将所有者更改为 bob,组群更改为 developers
      sudo chown bob:developers file.txt
这些命令构成了 Linux 文件管理的基础,熟练掌握它们是有效管理 RHEL 系统的关键。
在 Linux 中,文件管理主要通过命令行工具实现。以下是一些基本的文件管理命令及其详细示例:
1. 浏览文件系统 (Navigating the Filesystem)
 
命令描述
pwd 显示当前工作目录 (Print Working Directory)。
ls 列出目录内容 (List files and directories)。
cd 改变当前目录 (Change Directory)。
示例:
# 查看当前所在目录
pwd
# 输出示例: /home/username

# 列出当前目录下的文件和目录
ls 

# 列出详细信息(包括权限、所有者、大小、修改日期等)
ls -l

# 列出包括隐藏文件在内的所有文件
ls -a

# 进入名为 'Documents' 的子目录
cd Documents

# 返回上一级目录
cd ..

# 进入用户的家目录(主目录)
cd ~

# 进入系统的根目录
cd /
 
2. 创建文件和目录 (Creating Files and Directories)
命令描述
touch 创建一个空文件或更新现有文件的时间戳。
mkdir 创建一个新的目录 (Make Directory)。
示例:
# 创建一个名为 'file1.txt' 的空文件
touch file1.txt

# 创建一个名为 'new_directory' 的目录
mkdir new_directory

# 在指定路径创建目录(例如在 /tmp 下)
mkdir /tmp/temp_folder 

# 同时创建多级目录(使用 -p 选项)
mkdir -p project/src/headers
 
3. 查看文件内容 (Viewing File Contents)
命令描述
cat 连接并显示整个文件的内容。
less / more 分页显示长文件内容,方便阅读。
head 显示文件开头的前几行(默认为 10 行)。
tail 显示文件末尾的后几行(默认为 10 行)。
示例:
# 显示 file1.txt 的全部内容
cat file1.txt

# 分页查看一个大日志文件
less /var/log/syslog.log

# 查看配置文件的开始 5 行
head -n 5 /etc/ssh/sshd_config

# 实时监控日志文件的最后几行更新 (常用于故障排除)
tail -f /var/log/messages
 
4. 复制、移动和重命名文件 (Copying, Moving, and Renaming)
命令描述
cp 复制文件或目录 (Copy)。
mv 移动或重命名文件/目录 (Move)。
示例:
# 将 file1.txt 复制到 new_directory 目录中
cp file1.txt new_directory/

# 将 file1.txt 复制到 new_directory 目录,并重命名为 file2.txt
cp file1.txt new_directory/file2.txt

# 递归复制整个目录及其内容 (-r 选项是必需的)
cp -r new_directory/ backup_directory/

# 将 file1.txt 移动到 new_directory 目录中
mv file1.txt new_directory/

# 将 file2.txt 重命名为 renamed_file.txt(源和目标在同一目录)
mv file2.txt renamed_file.txt

# 移动文件并要求交互式确认(如果目标已存在)
mv -i file1.txt new_directory/ 
 
5. 删除文件和目录 (Deleting Files and Directories)
命令描述
rm 删除文件或目录 (Remove)。
rmdir 仅删除空目录。
示例:
# 删除文件 file1.txt
rm file1.txt

# 强制删除文件而不进行确认提示 (-f 选项)
rm -f file2.txt

# 递归删除目录及其所有内容 (-r 选项, 慎用!)
rm -r backup_directory/

# 删除空目录
rmdir new_directory/
 
6. 修改权限和所有权 (Modifying Permissions and Ownership)
命令描述
chmod 改变文件或目录的权限 (Change Mode)。
chown 改变文件或目录的所有者 (Change Owner)。
chgrp 改变文件或目录的所属组 (Change Group)。
示例:
# 使用数字模式 (r=4, w=2, x=1): 
# 给所有者读写执行权限 (7), 给组和其他用户只读权限 (444)
chmod 744 script.sh

# 使用符号模式: 给用户 (u) 和组 (g) 添加 (+) 写权限 (w)
chmod ug+w data.txt

# 将文件 owner.txt 的所有者更改为 'newuser'
sudo chown newuser owner.txt

# 将文件 group.txt 的所属组更改为 'webgroup'
sudo chgrp webgroup group.txt

# 将文件所有者更改为 newuser,同时将所属组更改为 webgroup
sudo chown newuser:webgroup file_group.txt

文件系统概述

查看和管理 Linux 系统中的文件组织。
文件系统概述主要涉及两个关键方面:文件系统类型(底层数据组织方式)和文件系统层次结构标准 (FHS)(用户可见的目录结构)。
1. 默认和支持的文件系统类型
RHEL  使用的技术是成熟、可靠的文件系统,以满足企业级需求:
  • XFS (默认文件系统):
    • 特点:XFS 是 RHEL  的默认文件系统,专为高性能和可扩展性而设计。它最初由 Silicon Graphics 开发。
    • 优势:支持非常大的文件系统(最大 8 EB)和超大文件,拥有快速的崩溃恢复能力(使用日志技术,日志速度快于 ext4),并且在处理大量小文件时性能优异。
    • 适用场景:大型数据库、文件服务器、高性能计算环境。
  • Ext4 (Extended File System 4):
    • 特点:ext4 是 Linux 历史上 ext 系列文件系统的最新版本,是许多其他 Linux 发行版的默认文件系统。
    • 优势:稳定、可靠,向后兼容 ext2 和 ext3。它提供日志功能、延迟分配和更大的文件系统支持(最大 1 EB)。
    • 适用场景:较小的服务器、通用桌面使用。
  • 其他支持的文件系统:
    RHEL  还支持其他类型的文件系统以实现互操作性或特定用途:
    • Vfat:支持 Windows FAT 文件系统,用于双启动或与 USB 驱动器交换数据。
    • ISO 9660:用于 CD/DVD-ROM 媒体。
    • NFS (Network File System):网络文件系统协议,用于远程文件共享。
    • SMB/CIFS:用于与 Windows 网络共享文件。
2. 文件系统层次结构标准 (FHS)
Linux 遵循一套名为 FHS 的通用标准,无论使用哪种底层文件系统类型(XFS 或 Ext4),用户看到的目录结构都是一致的。这个结构使得不同 Linux 系统之间的管理和导航保持一致性:
目录描述
/ 根目录 (Root Directory):整个文件系统的起点。所有其他目录都挂载在这里。
/bin 二进制文件:包含基本的用户命令(如 lscpmv)。
/boot 启动文件:存放引导加载程序(GRUB)、Linux 内核和 initrd 映像所需的文件。
/dev 设备文件:代表硬件设备,如磁盘 (/dev/sda)、终端 (/dev/tty)。
/etc 配置文件:存放所有系统范围的配置文件(如网络设置、服务配置、密码文件等)。
/home 用户主目录:存放普通用户的个人文件和配置 (/home/username)。
/lib / /lib64 系统库:存放程序运行时所需的共享库文件。
/media 可移动媒体挂载点:用于自动挂载 U盘、CD 等可移动设备。
/mnt 临时挂载点:管理员手动挂载临时文件系统的地方(例如挂载一个临时的网络共享)。
/opt 可选附加软件:存放第三方或可选的软件包。
/proc 进程信息:一个虚拟文件系统,实时反映内核和进程信息。
/root Root 用户的主目录:系统管理员(root)的个人目录。
/sbin 系统二进制文件:包含只有系统管理员才能运行的基本系统管理命令(如 fdiskreboot)。
/tmp / /var/tmp 临时文件:存放临时文件,系统重启后通常会被清空。
/usr 用户程序和数据:包含大多数系统应用程序、库和文档。
/var 可变数据:存放经常变化的数据,如日志文件 (/var/log)、数据库文件 (/var/lib)、缓存 (/var/cache)。
3. 特性总结
RHEL  的文件系统管理提供了以下关键特性:
  • 日志功能 (Journaling):XFS 和 ext4 都使用日志功能,记录预期的文件系统更改。这使得系统在意外断电或崩溃后能够快速恢复到一致状态,而无需长时间的完整性检查。
  • 企业级稳定性和性能:XFS 专为处理高负载和大容量数据而优化。
  • 逻辑卷管理 (LVM):RHEL  强烈推荐使用 LVM,它在物理硬盘和文件系统之间增加了一个抽象层,使得调整文件系统大小、添加新存储或创建快照变得更加灵活和容易。
Red Hat Enterprise Linux  (RHEL ) 的文件系统具有两个主要特点:统一的层次结构和使用 XFS 作为默认文件系统类型。 
1. 文件系统层次标准 (FHS)
Linux 文件系统采用单一的、统一的树状结构,一切都从根目录 (/) 开始。与其他操作系统(如 Windows 使用独立的驱动器盘符 C:、D: 等)不同,RHEL 8 中的所有存储设备、分区和网络共享都被“挂载”(mounted) 到这个统一的目录树下的特定目录中。 
RHEL  遵循 文件系统层次标准 (Filesystem Hierarchy Standard, FHS),它定义了每个目录的用途和应存储的内容。关键目录包括:
目录 描述
/bin 包含基本的二进制可执行命令,供所有用户使用(例如 lscpmv)。
/boot 存放启动系统所需的文件,包括 Linux 内核和引导加载程序文件。
/dev 包含设备文件,代表物理硬件组件(例如硬盘 /dev/sda)。
/etc 存放系统范围的配置文件(例如网络设置、用户密码影射文件等)。
/home 存放普通用户的个人主目录和数据。
/lib 包含系统启动和运行基本命令所需的共享库文件。
/mnt 用于临时挂载点,用于手动挂载外部设备(如 U 盘、CD-ROM)。
/opt 用于安装可选的第三方软件包。
/proc 虚拟文件系统,提供关于当前运行的内核和进程状态的信息。
/root root (超级用户) 的主目录。
/sbin 包含系统管理相关的二进制可执行命令(例如 ifconfigfdisk),通常只有 root 用户才能执行。
/tmp 用于存放临时文件,系统重启后通常会被清空。
/usr 包含用户程序和资源,是最大的目录之一(例如 /usr/bin/usr/lib/usr/share)。
/var 存放经常变化的数据,例如日志文件 (/var/log)、数据库文件 (/var/lib) 和缓存。
2. 支持的文件系统类型
RHEL  支持多种文件系统类型,每种类型都有其特点和适用场景。 
  • XFS (默认):
    • 特点:XFS 是 RHEL  中 / (根) 文件系统的默认选择。它是一个高性能、高度可扩展的 64 位日志文件系统,由 SGI 开发。
    • 优势:擅长处理非常大的文件和文件系统(支持最大 1024 TiB),在并行 I/O 性能方面表现出色,适合大型企业环境、数据库和高性能计算。
  • Ext4:
    • 特点:Ext4(第四代扩展文件系统)是 RHEL 中历史悠久且成熟的文件系统。它也是一个日志文件系统。
    • 优势:在处理大量小文件时性能良好,并且由于其成熟度,被认为非常稳定。安装程序通常默认使用 ext4 作为 /boot 分区的文件系统。
  • 其他支持类型:
    • NFS (Network File System) 和 SMB (Server Message Block):用于网络文件共享。
    • VFAT:支持与 Windows 兼容的 FAT 文件系统(例如 U 盘)。 
3. 核心概念
    • 一切皆文件:在 Linux 中,一个核心设计哲学是将所有事物(包括硬件设备、目录、网络套接字等)都视为文件,使得与它们的交互可以通过统一的文件 I/O 接口进行。
    • Inode:每个文件和目录都有一个 Inode(索引节点),它存储文件的元数据(如权限、所有者、时间戳、物理位置等),但不存储文件名或实际数据。
    • 日志功能 (Journaling)XFS 和 Ext4 都使用日志功能,通过记录预期的文件系统更改日志,确保在系统崩溃后能快速恢复文件系统一致性,防止数据损坏。

 

在 Linux 系统中,管理文件组织意味着理解其层次结构以及使用适当的命令来查看、浏览和维护它。
 
1. 理解文件组织结构 (FHS)
Linux 遵循文件系统层次结构标准 (Filesystem Hierarchy Standard, FHS)。需要了解其主要目录的作用(例如 /bin 存放命令,/etc 存放配置,/home 存放用户数据)。
 
2. 查看文件组织结构和内容
使用以下命令来查看和探索目录结构:
A. 浏览和定位
  • pwdPrint Working Directory,显示您当前所在的目录。
    pwd
    # 输出示例: /home/username
     
  • cdChange Directory,用于在目录间移动。
    cd /etc        # 切换到配置目录
    cd ..          # 切换到上一级目录
    cd ~           # 切换到用户主目录
B. 列出内容
  • ls: 列出目录内容。
    ls             # 列出当前目录的文件和目录
    ls -l          # 显示详细信息(权限、所有者、大小、日期等)
    ls -lh         # 详细信息并以人类可读的格式显示大小 (KB, MB, GB)
    ls -a          # 显示所有文件,包括隐藏文件(以 . 开头)
    ls -F          # 在目录名后加 /,在可执行文件后加 *,以便区分类型
C. 可视化目录树
  • tree: 以树状图形式递归显示目录结构。
    • 注意:tree 命令可能需要额外安装 (sudo dnf install tree 或 sudo apt install tree)。
    tree /home/username/project
    # 输出示例:
    # /home/username/project
    # ├── data.txt
    # ├── src
    # │   ├── main.c
    # │   └── Makefile
    # └── README.md
    # 2 directories, 3 files
D. 检查磁盘使用情况
  • duDisk Usage,用于查看文件或目录占用的磁盘空间大小。
    du -sh /var/log/  # 查看 /var/log/ 目录的总大小,并以人类可读格式显示
    du -ah /home/user # 查看指定目录下每个文件和子目录的大小
  • dfDisk Free,用于查看整个文件系统的挂载点、已用空间和可用空间。
    df -h           # 以人类可读格式显示磁盘空间使用情况
3. 管理和维护文件组织
有效的管理涉及使用前面提到的文件管理命令(如 mkdirmvrm 等)来维护一个清晰、有组织的文件系统:
  • 保持结构清晰:将配置文件放在 /etc 的子目录中,将用户数据放在 /home 下,避免将文件随意放在根目录下。
  • 使用描述性名称:使用具有清晰意义的文件名和目录名。
  • 定期清理:删除不再需要的临时文件(/tmp 或用户的临时目录)。
  • 利用符号链接 (Symbolic Links):
    • ln -s: 创建一个指向另一个文件或目录的快捷方式。这有助于将一个文件放在一个位置,同时让它看起来出现在另一个位置,避免重复存储。
    ln -s /opt/app/config.conf /etc/app_config.conf
  • 遵循权限管理:使用 chmod 和 chown 管理文件权限和所有权,确保只有授权用户才能访问敏感数据,维护系统的安全性。
在 Linux 系统中,文件组织管理是一项核心任务。这涉及理解文件系统的结构、使用正确的命令进行导航、查看信息以及维护组织。
 
1. 理解 Linux 文件组织结构 (FHS)
如前所述,Linux 遵循文件系统层次标准 (FHS),将所有文件和目录放置在一个以 / (根目录) 为起点的单一树状结构中。熟悉主要的目录用途是有效管理的前提。
 
2. 查看文件组织结构的工具和命令
使用以下命令可以帮助您查看和可视化系统的文件组织:
  • ls (List):最基本的查看目录内容的命令。
    • ls -F:在目录名后添加 /,在可执行文件后添加 *,便于识别类型。
    • ls -R:递归列出当前目录及所有子目录的内容(可能输出很多)。
    • ls -lha:显示详细信息、人类可读的大小,包括隐藏文件。
  • tree (目录树):此命令以图形化的树状结构显示目录层次。它默认没有安装在 RHEL 8 中,需要安装:
    sudo dnf install tree
    • 示例:
      tree          # 显示当前目录的树状结构
      tree -L 2 /etc  # 仅显示 /etc 目录下的前两级深度内容
      tree -d       # 仅显示目录,不显示文件
       
  • pwd (Print Working Directory):随时确认您在文件系统中的位置。
    • 示例:pwd
  • du (Disk Usage):用于查看目录和文件占用的磁盘空间,有助于管理存储组织。
    • 示例:
      du -sh /var/log   # 以人类可读的格式 (-h) 显示 /var/log 目录的总大小 (-s)
      du -ah --max-depth=1 /home # 显示 /home 下一级所有文件和目录的大小
3. 管理文件组织的实用技巧和最佳实践
管理文件组织不仅仅是移动文件,更重要的是维护一个逻辑清晰、高效且符合标准的环境:
  • 遵守 FHS:
    • 将配置文件放在 /etc
    • 将用户数据放在 /home 或 /var/www 等适当位置。
    • 避免在根目录 / 下创建自定义数据目录,除非绝对必要。
  • 使用一致的命名规范:
    • 使用小写字母、数字和连字符 (-) 作为文件名,避免使用空格或特殊字符,因为这在命令行中可能会引起问题。
  • 利用目录结构进行分类:
    • 不要将所有文件堆放在一个目录中。使用子目录按项目、类型或日期对文件进行逻辑分组。
  • 定期清理临时文件和日志:
    • /tmp 和 /var/tmp 用于临时数据。系统通常会自动清理 /tmp,但定期检查 /var/tmp 或 /var/log 有助于释放空间。
  • 利用符号链接 (Symbolic Links):
    • 当一个文件或目录需要在文件系统的多个位置被访问时,可以使用符号链接(软链接)来避免重复存储数据。
    • 示例:ln -s /opt/app/config.conf /etc/app_config.conf
  • 使用版本控制系统 (如 Git):
    • 对于项目相关的代码和重要文档,使用版本控制来管理文件的变更历史,而不是手动创建多个副本(如 file_v1.txtfile_v2.txt)。

用户和文件权限

与用户帐户交互并识别文件权限。
在 Linux 系统中,用户管理和文件权限是核心概念。用户分为普通用户和超级用户(root)。用户可以创建和管理文件,并为其设置读取、写入和执行的权限,这些权限根据用户、所属组和其他用户的不同而变化。
用户管理 
  • 普通用户: 创建用户后,普通用户只能对自己的主目录和文件进行管理。
  • 超级用户 (root): 拥有系统中的最高权限,可以管理所有文件和用户。
  • 获取 root 权限:
    • 使用 sudo 命令临时切换到 root 权限执行特定命令,需要输入用户的密码。
    • 使用 su - 命令切换到 root 用户,需要输入 root 用户的密码。 
文件权限 
Linux 文件权限分为三类: 
    • 用户(user): 文件所有者。
    • 组(group): 文件所属的组
    • 其他(others): 系统中所有其他用户。

每类用户都有三种权限:

  • 读取(read): 查看文件内容。
  • 写入(write): 修改文件内容。
  • 执行(execute): 运行脚本或程序。 
权限表示
文件权限通常用三个字母的组合表示,例如 rwx,其中 r 代表读取、w 代表写入、x 代表执行。 
  • 例如:-rw-r--r-- 表示所有者拥有读写权限,所属组和其他用户只有读权限。 
更改权限
  • chmod 命令: 用于更改文件权限。
    • chmod 755 filename为一个文件设置权限,其中 7 表示所有者拥有读、写、执行权限 (4+2+1=7)5 表示组和其他用户拥有读、执行权限 (4+0+1=5)。
  • chown 命令: 用于更改文件的所有者。 

管理文件系统权限

文件系统权限控制用户和组帐户读、修改和执行文件的内容以及进入目录的能力。

用户和文件权限管理是维护系统安全的核心。这基于三个关键概念:用户 (Users)组群 (Groups) 和权限 (Permissions)
1. 用户和组群管理
Linux 是一个多用户操作系统。每个文件和进程都与一个特定的用户和组群相关联。
A. 管理用户
命令描述示例
useradd 创建新用户账户 sudo useradd newuser
passwd 设置或更改用户密码 sudo passwd newuser
usermod 修改用户账户属性 sudo usermod -aG developers newuser (将用户添加到附加组)
userdel 删除用户账户 sudo userdel newuser (只删除账户)
userdel -r 删除用户账户及其主目录 sudo userdel -r newuser
B. 管理组群
命令描述示例
groupadd 创建新组群 sudo groupadd testers
groupdel 删除组群 sudo groupdel testers
gpasswd 管理组群成员 sudo gpasswd -a newuser testers (将用户添加到组)
2. 文件权限管理 (chmod, chown)
Linux 使用一套权限系统来控制谁可以访问文件以及如何访问。权限分为三类:读取 (r)写入 (w) 和执行 (x)
当使用 ls -l 查看文件时,显示如下格式:
-rwxr-xr-- 1 user group 1024 Oct 2810:00 filename.txt
 
权限位从左到右依次表示:
  • 第一个字符 (- 或 d):文件类型(- 表示文件,d 表示目录)。
  • 接下来的 3 位 (rwx):所有者 (u) 的权限。
  • 再接下来的 3 位 (r-x):组群 (g) 的权限。
  • 最后 3 位 (r--):其他人 (o) 的权限。
A. 更改所有权 (chown 和 chgrp)
  • chown:更改文件/目录的所有者。
    • 示例:将 filename.txt 的所有者更改为 bob
      sudo chown bob filename.txt
      
       
    • 示例:将所有者更改为 bob,同时将组群更改为 developers
      sudo chown bob:developers filename.txt
      
       
  • chgrp:仅更改文件的组群。
    • 示例:将 filename.txt 的组群更改为 sales
      sudo chgrp sales filename.txt
      
       
B. 更改权限 (chmod)
chmod 命令可以使用符号表示法或数字表示法来更改权限。
符号表示法 (Symbolic Mode):
使用 u (所有者), g (组群), o (其他人), a (所有人), 结合 + (添加), - (移除), = (设置)。
  • 示例:给所有者添加执行权限。
    chmod u+x script.sh
    
     
  • 示例:从组群和其他人移除写入权限。
    chmod go-w script.sh
    
     
  • 示例:设置所有者具有读写权限,组群和其他人只有读权限。
    chmod u=rw,go=r data.txt
    
     
数字表示法 (Numeric Mode):
将权限转换为数字:r=4w=2x=1。将每组权限的数字相加。
权限组合数字描述
rwx 7 读、写、执行
rw- 6 读、写
r-x 5 读、执行
r-- 4 只读
--- 0 无权限
  • 示例:设置权限为 -rwxr-xr-- (所有者 rwx=7, 组群 r-x=5, 其他人 r--=4)。
    chmod 754 filename.txt
    
     
  • 示例:设置目录权限,使得所有者完全控制 (7),组群可读、执行、访问 (5),其他人无权限 (0)。
    chmod 750 secure_data_dir/
    
     
在 Linux  中,用户和文件权限系统是其安全模型的基础。它决定了谁可以访问哪些文件以及如何访问。权限系统围绕三个实体(UserGroupOthers)和三种基本权限(ReadWriteExecute)构建。 
1. 用户和组管理 (User and Group Management)
系统管理员使用命令行工具来创建、修改和删除用户及组。
命令 描述示例
useradd 创建新用户账户。 sudo useradd newuser
passwd 为用户设置或更改密码。 sudo passwd newuser
usermod 修改用户账户属性(例如添加到组)。 sudo usermod -aG developers newuser (将 newuser 添加到 developers 组)
userdel 删除用户账户。 sudo userdel newuser
groupadd 创建新组。 sudo groupadd testers
id 显示当前或指定用户的 UID、GID 和所属组。 id newuser
示例:创建用户和组
 
# 创建一个名为 'bob' 的新用户
sudo useradd bob

# 为 bob 设置密码
sudo passwd bob 

# 创建一个名为 'projectA' 的新组
sudo groupadd projectA

# 将 bob 添加到 projectA 组(作为辅助组)
sudo usermod -aG projectA bob 
 
2. 文件权限基础 (File Permissions Basics)
使用 ls -l 命令可以查看文件或目录的详细权限信息。
 
ls -l filename.txt
# 输出示例: -rw-r--r-- 1 username groupname 0 Oct 31 10:00 filename.txt
 
第一列 (-rw-r--r--) 包含了权限信息:
  • 第一个字符:表示文件类型 (- 表示普通文件, d 表示目录)。
  • 接下来的九个字符:分为三组,每组三个字符 (rwx):
    • 第一组 (rwx):文件所有者 (User/Owner) 的权限。
    • 第二组 (r--):文件所属组 (Group) 成员的权限。
    • 第三组 (r--):其他用户 (Others) 的权限。 
权限类型:
符号 名称作用八进制值
r Read (读) 允许查看文件内容或列出目录文件。 4
w Write (写) 允许修改文件内容或在目录中创建/删除文件。 2
x Execute (执行) 允许运行文件(如果是程序或脚本)或进入目录。 1
- 无权限   0
3. 管理文件权限和所有权
A. chmod:更改权限 (Change Mode)
您可以使用符号模式(使用字母和符号)或绝对模式(使用八进制数字)来更改权限。 
符号模式示例:
 
# 给文件 owner.txt 的所有者 (u) 和组 (g) 添加 (+) 读、写和执行 (rwx) 权限
chmod ug+rwx owner.txt

# 从 others (o) 移除 (-) 写 (w) 权限
chmod o-w owner.txt

# 为所有用户 (a) 设置 (=) 只读权限
chmod a=r owner.txt
 
绝对模式(数字)示例:
通过将 r=4w=2x=1 的值相加来确定三位数字。
权限组合八进制值
rwx (读、写、执行) 4+2+1 = 7
rw- (读、写) 4+2+0 = 6
r-x (读、执行) 4+0+1 = 5
r-- (只读) 4+0+0 = 4
示例:
 
# 设置权限为:所有者 (7: rwx), 组 (5: r-x), 其他用户 (0: ---)
chmod 750 secure_script.sh

# 设置权限为:所有者 (6: rw-), 组 (4: r--), 其他用户 (4: r--)
chmod 644 public_file.txt
 
B. chown 和 chgrp:更改所有权 (Change Ownership/Group)
  • chown:更改所有者和/或组。
  • chgrp:仅更改组。 
示例:
 
# 将 file.txt 的所有者更改为 bob (需要 sudo 权限)
sudo chown bob file.txt

# 将 file.txt 的所属组更改为 testers (需要 sudo 权限)
sudo chgrp testers file.txt 

# 同时更改所有者为 bob,组为 projectA
sudo chown bob:projectA file.txt

# 递归更改目录及其所有内容的权限 (-R 选项)
sudo chown -R bob:projectA /srv/project_data
 
通过熟练使用这些命令,可以精确控制谁可以访问系统资源,从而维护 RHEL 系统的安全性。

获取和安装软件包

从官方存储库和其他来源获取并安装软件。
在 RHEL/CentOS 8 系统上,可以使用 dnf 命令来获取和安装软件包。首先,使用 dnf search <软件包名> 来搜索可用软件包,然后使用 dnf install <软件包名> 来安装。如果需要卸载,可以使用 dnf remove <软件包名> 
获取和安装软件包
    1. 搜索软件包
      • 使用 dnf search <软件包名> 来搜索可用软件包。
      • 示例:dnf search firefox
    2. 安装软件包
      • 使用 dnf install <软件包名> 来安装软件包。
      • 示例:dnf install firefox
    3. 更新软件包
    4. 使用 dnf update 来更新所有已安装的软件包。
    5. 示例:dnf update firefox 来更新特定的 firefox 软件包。
  • 卸载软件包
    • 使用 dnf remove <软件包名> 来卸载软件包。
    • 示例:dnf remove firefox 
其它常用命令
  • 列出所有已安装的软件包
    • dnf list installed
  • 查看软件包信息
    • dnf info <软件包名> 来查看软件包的详细信息。
  • 清理缓存
    • dnf clean all 可以清除缓存数据,释放磁盘空间。
在 Red Hat Enterprise Linux 8 (RHEL 8) 中,主要的软件包管理工具是 dnfdnf 是 Dandified YUM 的缩写,它基于 YUM (Yellowdog Updater Modified) 的技术,但提供了更好的性能和依赖性解析。
以下是获取和安装软件包的详细步骤和示例:
 
1. 使用 dnf 命令安装软件包
dnf 通过连接到配置好的软件仓库 (repositories) 来查找、下载和安装软件包及其所有依赖项。
  • 安装单个软件包:
    sudo dnf install package_name
    • 示例:安装 nginx Web 服务器。
      sudo dnf install nginx
  • 安装多个软件包:
    sudo dnf install package1 package2 package3
  • 更新已安装的软件包:
    sudo dnf update package_name
    # 或更新所有系统上的软件包
    sudo dnf update
  • 搜索软件包:
    dnf search search_term
    # 示例:搜索与 'development tools' 相关的软件包
    dnf search "development tools"
  • 查看软件包信息:
    dnf info package_name
    # 示例:查看 nginx 的详细信息
    dnf info nginx
  • 移除软件包:
    sudo dnf remove package_name
    # 或移除软件包及其不再需要的依赖项
    sudo dnf autoremove package_name
2. 使用软件包组
RHEL 8 将相关软件包组织成“组” (groups),方便一次性安装一组功能相关的软件。
  • 列出可用的软件包组:
    dnf group list
  • 安装软件包组:
    sudo dnf groupinstall "Development Tools"
    # 示例:安装包含图形界面的服务器环境
    sudo dnf groupinstall "Server with GUI"
3. 使用 AppStream 和 BaseOS 模块
RHEL 8 引入了模块化 (Modularity) 概念,将软件分成了 BaseOS (基础操作系统) 和 AppStream (应用流)。
  • BaseOS 包含操作系统的核心组件,生命周期长。
  • AppStream 包含各种应用软件,可以有多个版本并行存在。
通常,您只需要使用 dnf installdnf 会自动从正确的流中获取软件包。
 
4. 从本地 RPM 文件安装
如果您下载了独立的 .rpm 软件包文件(例如从 Red Hat 官网),可以使用 dnf 或 rpm 命令安装。使用 dnf 的好处是它会自动解析并安装所需的依赖项。
# 使用 dnf 安装本地 RPM 文件并自动处理依赖
sudo dnf install /path/to/your/package.rpm

# 或者使用 rpm 命令(不会自动处理依赖,需要手动解决)
sudo rpm -ivh /path/to/your/package.rpm
 
5. 添加额外的软件仓库 (Repository)
RHEL 默认只包含官方 Red Hat 仓库。要获取更多社区软件包,通常需要添加 EPEL (Extra Packages for Enterprise Linux) 仓库。
  • 安装 EPEL 仓库:
    sudo dnf install epel-release
  • 安装完成后,您可以像往常一样使用 dnf install 命令安装 EPEL 中的软件包。
通过以上方法,可以高效、安全地在 RHEL 8 系统中管理软件包。
 
在 Red Hat Enterprise Linux 8 (RHEL 8) 中,获取和安装软件包的主要工具是 DNF(Dandified Yum)。虽然仍可以使用 yum 命令,但它在 RHEL 8 中基于 DNF 技术,功能基本相同。 
 
1. 使用 DNF 从软件仓库安装软件包
这是安装软件最推荐的方法。DNF 会自动处理依赖关系,确保系统一致性。
 
A. 搜索软件包
如果您不确定软件包的确切名称,可以使用 dnf search 命令:
sudo dnf search nginx
 
B. 安装软件包
使用 dnf install 命令安装软件包及其所有依赖项。
sudo dnf install package_name
示例:安装 Apache Web 服务器 (httpd)
sudo dnf install httpd
示例:安装时不进行交互式确认(自动回答 'yes')
sudo dnf install httpd -y
 
C. 更新软件包
  • 检查可用更新:
    sudo dnf check-update
  • 更新单个软件包:
    sudo dnf upgrade httpd
  • 更新系统上所有软件包:
    sudo dnf upgrade
    # 或者使用同义词
    sudo dnf update
D. 移除软件包
使用 dnf remove 或 dnf erase 命令删除已安装的软件包。
sudo dnf remove package_name
# 或者
sudo dnf erase package_name
  • 移除不再需要的依赖项:
    删除软件包后,可能会留下其他程序不再需要的依赖项。使用 autoremove 清理它们:
    sudo dnf autoremove
2. 从本地 RPM 文件安装软件包
有时您可能需要安装一个本地下载的 .rpm 文件(例如,自定义开发的软件或供应商提供的特定版本)。DNF 也可以处理本地 RPM 文件,并会自动尝试从配置的仓库中解析其依赖关系。 
示例:安装位于 ~/Downloads/example-1.0.0_1.rpm 的本地 RPM 文件
sudo dnf install ~/Downloads/example-1.0.0_1.rpm
 
3. 使用图形界面安装 (GNOME Software)
如果您使用的是带有 GUI 的 RHEL 8 系统,可以使用“Software”应用程序(类似于应用商店)来浏览、搜索和安装软件,无需使用命令行。 
 
4. 启用额外的软件仓库 (Repositories)
默认的 RHEL 8 仓库(BaseOS 和 AppStream)包含核心系统组件。要安装其他软件(例如 EPEL - Extra Packages for Enterprise Linux 仓库中的工具),您可能需要先启用额外的软件仓库:
示例:安装并启用 EPEL 仓库
sudo dnf install epel-release
安装后,DNF 就可以搜索并安装 EPEL 仓库中的软件包了。
 
1. 从官方存储库获取和安装软件
官方存储库是获取核心 RHEL 软件的主要来源,它们是稳定且受支持的。
RHEL 8 官方仓库包括:
  • BaseOS:包含核心操作系统组件,生命周期长。
  • AppStream:包含应用程序、运行时语言和数据库,具有模块化特性。
默认情况下,这些仓库在您注册并订阅 RHEL 系统后是启用的。
获取和安装步骤:
  1. 检查可用的仓库:确认官方仓库已启用。
    dnf repolist 
    # 您应该能看到 rhel-8-for-*-baseos-rpms 和 rhel-8-for-*-appstream-rpms
  2. 搜索软件包:
    sudo dnf search package_name
  3. 安装软件包:DNF 会自动从正确的官方仓库中拉取软件包及其依赖项。
    sudo dnf install package_name
    • 示例:安装 httpd (Apache Web Server)
      sudo dnf install httpd
  4. 更新软件包:
    sudo dnf update package_name
    # 或更新所有官方仓库的软件包
    sudo dnf update
2. 从其他来源获取和安装软件
有时您需要的软件不在官方仓库中,需要使用第三方来源。最常见的第三方仓库是 EPEL。

Linux 网络和系统资源

描述网络的基本概念、验证网络设置并监控系统资源。
在 Linux  中,管理网络和系统资源主要依赖于命令行工具和 NetworkManager 服务。RHEL /CentOS  使用 NetworkManager 作为默认的网络管理服务,并推荐使用 nmcli 和 ip 命令进行网络配置,同时提供了丰富的工具来监控系统资源。 
 
系统资源管理与监控
以下是用于监控和管理系统资源的关键命令:
 
资源类别 命令描述
CPU 和进程 top 实时显示系统进程、CPU 使用率、内存使用率等信息。
  htop 交互式的 top 替代品,提供更友好的界面和额外功能 (可能需要安装)。
  ps 显示当前运行进程的状态。
  vmstat 报告虚拟内存统计信息,包括进程、内存、交换、I/O 和 CPU 活动。
  mpstat 报告每个可用处理器的活动统计信息。
内存 free -m 以兆字节为单位显示总内存、已用内存、可用内存以及缓冲区/缓存的使用情况。
  vmstat 也提供内存和交换空间利用率的统计信息。
磁盘空间 df -h 以人类可读的格式 (-h) 显示文件系统的磁盘空间使用情况。
  du -sh 估算指定目录或文件的磁盘空间使用量。
  lsblk 列出块设备(如磁盘及其分区)的信息。
I/O 监控 iostat 显示 CPU 利用率和设备 I/O 统计信息。
  iotop 监控磁盘 I/O 使用率,并按进程显示(可能需要安装)。
硬件信息 lscpu 显示 CPU 架构信息。
  dmidecode 提供详细的硬件信息,如内存插槽、制造商信息等 (需要管理员权限)。
  hwinfo 收集并打印详细的硬件报告(可能需要安装)。
资源限制 ulimit 用于查看和设置用户进程的资源限制。
 
网络管理与监控
Linux  中推荐使用 ip 和 nmcli 命令进行网络配置和管理,传统的 ifconfig 和 netstat 已被弃用或需要额外安装 net-tools 包。 
 
任务类别 命令描述
配置与状态 nmcli NetworkManager 的命令行工具,用于创建、编辑、激活/停用网络连接,以及控制网络设备状态。
  ip addr show 显示网络接口的 IP 地址和状态信息。
  ip route 显示和配置路由表。
连通性测试 ping 测试主机可达性并测量往返时间 (RTT)。
  traceroute 跟踪数据包到达目的地所经过的路由和跳数。
  mtr 结合了 ping 和 traceroute 功能的网络诊断工具。
网络分析 ss 替代 netstat,用于显示套接字统计信息。
  iftop 实时监控网络接口的带宽使用情况(可能需要安装)。
  tcpdump 抓取和分析网络接口上的数据包。
  nmap 网络扫描工具,用于发现网络上的主机和服务以及开放端口。
 
资源限制与控制组 (cgroups)
Linux 内核的 控制组 (cgroups) 功能允许系统管理员在分层结构的进程组之间分配和限制资源(如 CPU 时间、系统内存、网络带宽等)。在 Linux  中,cgroups 的配置通常通过 systemd 服务进行管理。 
通过熟练使用这些命令和工具,可以有效地监控系统健康状况、诊断性能问题并管理 Linux  环境中的网络连接。

 

在 Red Hat Enterprise Linux 8 (RHEL 8) 中,可以使用各种命令行工具来监控网络状态和系统资源。RHEL 8 使用现代工具(如 ip 和 nmcli 进行网络管理,top 和 vmstat 进行资源监控)代替了一些旧版命令。
 
1. 网络管理和监控
 
A. 配置网络接口 (nmcli 和 nmtui)
RHEL 8 主要使用 NetworkManager 服务管理网络,其命令行接口是 nmcli
  • 查看网络连接状态:
    nmcli device status
    nmcli connection show
  • 启用/禁用网络接口:
    sudo nmcli device disconnect eth0
    sudo nmcli device connect eth0
  • 编辑网络连接:
    • nmcli 命令:
      sudo nmcli connection modify "System eth0" ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.method manual
      sudo nmcli connection up "System eth0"
    • nmtui 工具:这是一个交互式的文本用户界面 (TUI) 工具,非常直观:
      sudo nmtui
B. 查看网络信息 (ip 命令)
ip 命令取代了旧版的 ifconfig
  • 查看所有网络接口的 IP 地址和状态:
    ip addr show
    # 简写为:ip a
  • 查看路由表:
    ip route show
    # 简写为:ip r
  • 查看网络统计信息(例如传输/接收的字节数):
    ip -s link show eth0
C. 网络连接和流量监控
  • ss 命令:取代了旧版的 netstat,用于查看活动的网络连接、监听端口等。
    ss -antp    # 显示所有 TCP 连接 (a), 不解析服务名 (n), 显示端口 (t), 显示进程 (p)
    ss -tuln    # 显示所有 UDP 和 TCP 监听端口
  • iftop 或 nload:这些工具可以实时监控网络接口的带宽使用情况(需要单独安装)。
 
2. 系统资源监控
 
A. CPU、内存和进程监控 (tophtop)
  • top:经典的实时系统监控工具,显示 CPU 使用率、内存使用量、运行时间、负载平均值以及最活跃的进程列表。
    top
  • htop:一个更友好、交互性更强的 top 替代品(需要安装:sudo dnf install htop)。它提供彩色界面和鼠标支持。
    htop
B. 内存使用情况 (free)
  • 查看内存和交换空间使用情况:
    free -m     # 以兆字节 (MB) 为单位显示
    free -g     # 以吉字节 (GB) 为单位显示
C. CPU 和内存统计 (vmstat)
  • vmstat:提供关于进程、内存、分页、块 I/O、陷阱和 CPU 活动的摘要统计信息。
    vmstat 2 5  # 每 2 秒刷新一次,共显示 5 次
D. 磁盘 I/O 监控 (iostat)
  • iostat:报告 CPU 统计信息以及设备、分区或网络文件系统的输入/输出统计信息(需要安装:sudo dnf install sysstat)。
    iostat -xm 2 # 以 MB 为单位显示扩展 I/O 统计信息,每 2 秒更新一次
E. 综合监控 ( Cockpit)
RHEL 8 包含一个基于 Web 的管理界面 Cockpit,它提供了一个直观的图形仪表板来监控所有系统资源(CPU、内存、磁盘 I/O、网络流量)和配置网络接口。可以通过浏览器访问 https://your_server_ip:9090 来使用它。
 
在 Red Hat Enterprise Linux 8 (RHEL 8) 中,您可以使用各种命令行工具来监控系统资源(CPU、内存、磁盘)并管理网络连接。
 
1. 网络管理和状态
RHEL 8 默认使用 NetworkManager 服务来管理网络配置。主要通过 nmcli 和 ip 命令进行交互。
  • 查看网络接口状态:
    nmcli device status 
    # 或者使用 ip addr
    ip addr show
  • 查看连接配置详情:
    nmcli connection show
    nmcli connection show connection_name # 例如 nmcli connection show enp0s3
  • 配置网络连接:
    • 启用/禁用连接:
      sudo nmcli connection up connection_name
      sudo nmcli connection down connection_name
    • 设置静态 IP 地址:
      sudo nmcli connection modify connection_name ipv4.addresses "192.168.1.100/24"
      sudo nmcli connection modify connection_name ipv4.gateway "192.168.1.1"
      sudo nmcli connection modify connection_name ipv4.dns "8.8.8.8 8.8.4.4"
      sudo nmcli connection modify connection_name ipv4.method manual
      sudo nmcli connection up connection_name
  • 查看网络统计信息:
    ip -s link show interface_name # 例如 ip -s link show enp0s3
    # 实时监控网络流量,可以使用 iftop 或 nload 工具 (需要安装 epel-release)
 
2. 系统资源监控
有多种命令行工具用于实时和历史监控 CPU、内存、磁盘和进程。
  • top:实时显示系统进程、CPU 使用率和内存使用情况。
    top
    # 按 'q' 退出
    • 在 top 输出中,关注 %Cpu(s): 行(特别是 us (用户空间), sy (系统), id (空闲))和 Mem: 行(totalusedfree)。
  • htoptop 的增强版,提供彩色的、更直观的交互式界面(需要安装,例如 sudo dnf install htop)。
    htop
  • free:快速查看内存 (RAM) 和交换空间 (swap) 的使用情况。
    free -h  # 以人类可读的格式 (MB, GB) 显示
  • df:检查磁盘空间使用情况(磁盘剩余空间)。
    df -h    # 以人类可读的格式显示文件系统挂载点和使用情况
  • du:查看特定目录或文件占用的空间大小。
    du -sh /var/log/  # 查看 /var/log/ 目录的总大小
  • vmstat:报告虚拟内存统计信息以及 CPU 利用率。
    vmstat 5  # 每隔 5 秒输出一次统计信息
  • iostat:报告 CPU 统计信息和设备的 I/O 负载(需要安装 sysstat 软件包)。
    sudo dnf install sysstat
    iostat -xm 5 # 每 5 秒显示一次扩展的 I/O 统计信息 (MB/s)
  • ss: 用于查看 socket 统计信息,是 netstat 的现代替代品,可以快速列出网络连接和开放端口。
    ss -tuln # 显示所有 TCP/UDP 监听端口
    ss -antp # 显示所有活动的 TCP 连接及相关的进程 ID
 
 

 

posted @ 2025-11-01 20:54  Ahabe  阅读(8)  评论(0)    收藏  举报