Linux-命令精要-全-
Linux 命令精要(全)
原文:
annas-archive.org/md5/eb3c60aab42b7a5286616e4543d3f6f6译者:飞龙
前言
您好!在我们快速变化的技术世界中,学习和理解 Linux 命令行界面至关重要。以其稳健性、多功能性和开源性而闻名的 Linux 操作系统已成为现代计算的一个重要组成部分。
Essential Linux Commands是您进入这个充满命令行技能的动态世界的入门。无论您是经验丰富的系统管理员、开发人员还是简单地希望探索 Linux 力量的人,这本书提供了一本全面而易于理解的基础工具指南。
Linux 命令是默默无闻的英雄,高效地完成从文件管理到网络配置、系统安全和性能优化等各种任务。每个命令都是您工具库中宝贵的工具,能够简化复杂操作并自动化日常任务。
随着我们的数字景观不断变化,理解 Linux 命令成为一项基本技能。通过本书,您不仅将获得在 Linux 环境中航行的技术知识,还将获得处理现实挑战的信心。
Linux 命令的魅力在于其普适性。它们同样适用于个人项目的开发者和管理复杂企业级基础设施的专业人士。本书所提供的知识将使您能够高效地管理和操作基于 Linux 的系统。
本书提供深入的解释、实用的示例和宝贵的见解,确保您不仅获得技术熟练度,还掌握在 Linux 世界中脱颖而出所需的实用智慧。
正如 Linux 命令的世界不断发展和演变一样,本书旨在与您共同成长,为 Linux 掌握提供一个基础。
因此,当我们开始通过Essential Linux Commands这本书的旅程时,请准备好解锁 Linux 的全部潜力,改变您与数字世界互动的方式。无论您是第一次涉足 Linux 还是希望提升现有技能,这本书都是您成为熟练 Linux 命令行用户的关键。
本书适合对象
这本书面向广泛的技术爱好者、专业人士和学习者群体。它为那些希望全面掌握 Linux 命令行技能的个人提供了一本全面指南:
-
Linux 爱好者:如果您对 Linux 充满热情,并希望深入了解其命令行界面,本书将为您提供丰富的知识以提升您的专业水平。
-
开发人员:无论您是软件开发人员、Web 开发人员还是程序员,理解 Linux 命令对您的工作至关重要。本书帮助您利用命令行的力量提高生产效率。
-
IT 专业人士:如果你从事 IT 行业,这本书提供了 Linux 命令的见解,能够增强你的问题解决能力,并拓宽你的技能范围。
-
学生与未来的专业人士:如果你正在学习计算机科学或追求 IT 行业的职业生涯,这本书作为基础性资源,帮助你掌握 Linux 命令的基本概念。
-
任何对 Linux 感兴趣的人:如果你一直对 Linux 感到好奇,想要探索其命令行功能,这本书是一个用户友好的起点。
本书内容涵盖
第一章,CentOS 服务器的安装与配置,提供了 CentOS 服务器初始设置的全面指南,提供了无缝启动的必要见解和实用步骤。内容涵盖了操作系统安装文件的下载、虚拟机管理程序的下载和设置、软件包安装命令以及信息命令等关键方面。
第二章,Linux 用户与组命令,提供了关于使用useradd、userdel和usermod等命令的宝贵见解和实用指导,帮助你掌握文件、目录和权限命令。此外,还包括了groupdel、groupmod、groupadd和grpck命令,以及pwck、chage和passwd命令。为了进一步提升 Linux 技能,本章还深入探讨了find、locate和whereis命令。
第三章,文件压缩与归档命令,提供了关于管理和压缩文件与归档的必备命令的全面指南。它为你提供了高效使用文件压缩和归档工具的知识和实用技能。本章涵盖了如gunzip和gzip等压缩命令,tar、rar和unrar等归档命令,zip和unzip用于创建和提取归档文件,以及bunzip2和bzip2等命令。
第四章,格式化和磁盘空间命令,提供了关于管理磁盘格式化和优化磁盘空间的必备命令的全面指南。它使你掌握了高效操作磁盘格式化和空间管理工具的知识和实践技能。该章节还探索了 Linux 中磁盘格式化和分区的历史与演变,提供了创建分区的逐步指引。同时,涵盖了fdisk、lsblk、df和du等命令,以分析和管理磁盘空间,以及显示包空间的命令如dpkg和rpm。此外,本章还涉及了mkfs、mke2fs和fdformat等命令。
第五章,Linux 权限命令,为您提供了一份全面的指南,帮助您管理和优化 Linux 环境中的文件权限。它为您提供了高效使用 Linux 权限命令所需的知识和实用技能。还探讨了权限命令的重要性及不同类型的权限,并深入分析了chmod、chown、chgrp和umask等命令。此外,本章还讲解了如何在命令中使用绝对路径,并介绍了使用sudo以提升权限执行命令的方法。
第六章,文件系统挂载与操作命令,为您提供了在 Linux 环境中高效管理文件系统、执行挂载和操作文件所需的知识和实用技能。它介绍了 Linux 中的基本挂载命令,涵盖了mount和umount命令,用于挂载和卸载文件系统。此外,本章还介绍了fuser命令,并深入探讨了文件操作,使用如cat和grep等命令,帮助您在 Linux 环境中有效地处理文件和目录。
第七章,文件内容与转换命令,为您提供了在 Linux 环境中高效处理文件内容和转换所需的知识和实用技能。它探讨了如何使用tail和file等基本命令来检查和分析文件内容。还介绍了convert命令用于文件格式转换,并引入了如dos2unix命令用于将 MS-DOS 文件转换为 Unix 格式,以及unix2dos命令用于将 Unix 文件转换为 MS-DOS 格式。此外,本章还讨论了recode命令,提供了一套全面的工具,帮助您高效管理和转换文件内容。
第八章,Linux SWAP 命令,为您提供在 Linux 环境中高效管理 SWAP 内存所需的基本知识和实用技能。重点介绍关键的 SWAP 命令,如swapon和free,帮助您有效管理和优化 SWAP 内存,以提升系统性能。
第九章,Linux 监控与调试命令,为您提供了一个全面的工具包,用于有效地监控、排查故障和调试 Linux 系统。深入探讨了一系列关键命令,包括top、ps、pstree、strace、watch、smartctl和uptime,用于实时监控和系统分析。本章确保您掌握所需的工具,能够保持 Linux 环境的平稳运行。此外,还涵盖了如lsof、lsmod、last reboot、last、w和vmstat等命令,用于跟踪系统进程和资源利用情况。您将学习到如何使用kill和pkill命令终止进程,进一步提高在 Linux 系统管理中的技能。
第十章,Linux IPTABLES 与网络命令,为你提供了在 Linux 环境中管理网络安全和配置的全面工具。本章深入探讨了诸如iptables -t ACCEPT和iptables -t DROP等基础 iptables 规则,帮助你有效控制网络流量。它还探讨了诸如ifconfig、ip、route和netstat等网络管理命令,用于配置和监控网络设置。此外,本章涵盖了hostname和nslookup命令,用于管理系统和网络身份,以及host命令,用于域名解析,确保你具备掌握网络控制和安全的技能。
第十一章,文件传输、下载和管理日志文件,为你提供了在 Linux 环境中高效传输文件、下载内容和管理日志文件的工具。本章探讨了如何使用netcat和socat将文件复制到远程系统,提供了多功能的文件传输解决方案。它还涵盖了使用wget和curl从网络下载文件。此外,本章深入探讨了常见日志文件的探索,提升了你在管理和分析系统日志方面的技能,以便于故障排除和监控。
第十二章,探索 Linux 安全性,为你提供了增强 Linux 系统安全性所需的知识和工具。本章深入探讨了强制模式和宽容模式、启用或禁用 SELinux 布尔值、锁定用户账户和保障 SSH 等话题。它为你提供了对 Linux 安全措施的全面理解,并提供了实际技术来保护你的系统免受潜在威胁和漏洞的攻击。
第十三章,云中的 Linux,提供了在 AWS 服务范围内的深入探索,重点讲解了如何在 AWS 上创建 EC2 实例,指导你通过 PuTTY 建立安全连接并高效地在这些实例中工作。它为你提供了无缝启动 Linux 云环境所需的基本知识和技能。
要最大化本书的效用
| 书中涵盖的软件/硬件 | 操作系统要求 |
|---|---|
| VMware | Windows |
| PuTTY | Windows |
convert(ImageMagick) |
Linux |
convert命令默认不随 Linux 一起安装;它通常是ImageMagick软件套件的一部分。要安装它,请执行以下命令:
sudo yum install ImageMagick
以下是最大化本书效用的基本前提条件:
-
基本 Linux 知识:虽然必备的 Linux 命令是为初学者设计的,但如果你对 Linux 基础知识(如文件系统导航和命令行使用)有基本了解,将会有所帮助。
-
学习的渴望:你应该以一种愿意学习和实验书中展示的 Linux 命令的态度来阅读本书。你练习得越多,技能就会提高得越快。
-
愿意进行实验和探索:不要仅限于书中的命令。尝试不同的变种,探索与你的兴趣或工作相关的其他 Linux 命令。
我们还提供了其他来自我们丰富书籍和视频目录的代码包,访问github.com/PacktPublishing/查看吧!
使用的约定
本书中使用了多种文本约定。
文本中的代码:表示文本中的代码、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 用户名。这里有一个例子:“Linux 中的useradd命令用于创建一个新用户账户或更新现有账户。”
代码块如下所示:
username:password:lastpasswordchanged:minpasswordage:maxpasswordage:passwordwarningperiod:inactivityperiod:expirationdate:reservedfield
当我们希望引起你对代码块中特定部分的注意时,相关的行或项目会使用粗体显示:
username:password:lastpasswordchanged:minpasswordage:maxpasswordage:passwordwarningperiod:inactivityperiod:expirationdate:reservedfield
任何命令行输入或输出都如下所示:
sudo "useradd [options] username"
粗体:表示一个新术语、一个重要的词汇或屏幕上显示的词汇。例如,菜单或对话框中的词语会以这样的方式出现在文本中。这里有一个例子:“我们的第二步是选择所有架构的x86_64选项。”
提示或重要说明
以这种方式显示。
联系我们
我们欢迎读者的反馈。
一般反馈:如果你对本书的任何内容有疑问,请在邮件主题中注明书名,并通过 customercare@packtpub.com 与我们联系。
勘误:尽管我们已尽力确保内容的准确性,但错误仍然可能发生。如果你在本书中发现错误,我们将不胜感激你能向我们报告。请访问www.packtpub.com/support/errata,选择你的书籍,点击勘误提交表单链接,并输入相关信息。
盗版:如果你在互联网上发现任何我们作品的非法复制品,我们将感激你提供其地址或网站名称。请通过 copyright@packt.com 与我们联系,并附上链接。
如果你有兴趣成为作者:如果你在某个领域有专长,并且有兴趣撰写或参与书籍的编写,请访问authors.packtpub.com。
分享你的想法
阅读完《Essential Linux Commands》后,我们很希望听到你的想法!请点击这里直接访问该书的亚马逊评论页面并分享你的反馈。
你的评价对我们以及技术社区非常重要,能帮助我们确保提供优质内容。
下载本书的免费 PDF 副本
感谢购买本书!
你喜欢随时随地阅读,但又无法随身携带纸质书籍吗?
你的电子书购买与你选择的设备不兼容吗?
不用担心,现在购买每本 Packt 书籍,你都会免费获得该书的无 DRM PDF 版本。
随时随地,任何设备上阅读。直接从你最喜欢的技术书籍中搜索、复制并粘贴代码到你的应用程序中。
优惠不仅仅是这些,你还可以独享折扣、新闻简报以及每日送到邮箱的精彩免费内容
按照这些简单步骤获取福利:
- 扫描二维码或访问以下链接

packt.link/free-ebook/9781803239033
-
提交你的购买凭证
-
就这些!我们会直接把你的免费 PDF 和其他福利发送到你的邮箱
第一部分:服务器安装与管理命令
在这一部分,我们深入探讨了 Linux 系统的基本系统管理任务,包括设置、维护以及软件安装中包管理的关键作用。你将熟练掌握文件结构导航、用户与组管理,以及文件压缩和归档等技能。每一章都为你提供了独特的命令、必要的知识和实用技能,帮助你在 Linux 环境中有效地进行服务器安装和管理。
本节包含以下章节:
-
第一章,让 CentOS 服务器启动并运行
-
第二章,Linux 用户和组命令
-
第三章,文件压缩与归档命令
第一章:启动并运行 CentOS 服务器
作为系统管理员,您可能会遇到的最基本任务之一是定义您的角色和职责。然而,如何做这一点在很大程度上取决于您问谁。不同的人和公司可能对系统管理员这一职称有不同的看法。
欢迎来到本书的第一章,我们将在这一章学习服务器安装和管理命令。设置 Linux 系统并保持其更新是大多数系统管理员在日常工作中执行的基本任务。在这一章中,我们将从设置 Linux 服务器开始,然后学习包管理的目的以及它如何为 Linux 主机提供一个简单的软件安装方式。接下来,我们将探索允许我们查看 Linux 文件结构、添加用户和组以及归档文件的命令。
到本章结束时,您将掌握设置和管理 Linux 服务器的基本技能。我们将首先学习如何下载 CentOS 服务器安装文件,设置虚拟机管理程序并安装软件包。我们还将探索一些命令,让您能够查看系统、内核、硬件和处理器的信息。通过本章所学的技能,您将能够自信地设置和管理 Linux 服务器。
在本章中,我们将涵盖以下主要内容:
-
下载操作系统(OS)安装文件
-
下载并设置虚拟机管理程序
-
包安装命令
-
信息命令
下载操作系统安装文件
在本节中,我们将介绍下载 Linux 服务器操作系统的过程,包括推荐哪些 Linux 发行版以及需要满足的要求。
在为您的服务器选择 Linux 发行版时,有很多选项可供选择。一些流行的选择包括 Ubuntu、Debian 和 Red Hat。然而,对于企业和 Web 服务器环境来说,社区企业操作系统(CentOS)是最受欢迎且最稳定的选择之一。
CentOS 是基于红帽企业 Linux(RHEL)的免费开源 Linux 发行版。它以稳定性和可靠性著称,是企业和 Web 服务器环境中常用的选择。它也广泛应用于托管行业、教育、研究和个人使用。它与红帽生态系统兼容,这意味着用户可以利用他们现有的 RHEL 知识、技能和工具。该发行版由一个庞大的开发者和用户社区维护,他们共同提供更新和安全补丁,确保其安全性和稳定性。此外,它设计与上游厂商红帽完全兼容,并提供几乎相同的环境。这意味着用户可以使用与红帽 Linux 相同的命令和包,也可以访问红帽客户门户和技术支持。由于我们将在本书中使用 CentOS,因此我们将从官方网站 (www.centos.org/) 下载安装镜像。该网站提供了 DVD 和最小化的 ISO 镜像,可以用于安装服务器。确保下载适合您架构(32 位或 64 位)的正确版本。
在下载 CentOS 8 的安装镜像时,有两种可选的方式:
-
CentOS-Stream-8-x86_64-20220104-boot.iso -
CentOS-Stream-8-x86_64-20220104-dvd1.iso
CentOS-Stream-8-x86_64-20220104-boot.iso 文件是一个用于启动系统和执行网络安装的最小化镜像。它设计用于网络安装过程,仅包含启动安装过程所需的包。在安装过程中,额外的文件会被下载。
CentOS-Stream-8-x86_64-20220104-dvd1.iso 文件是包含所有分发包的 DVD 镜像。它可以用于本地安装(也称为离线安装,因为在安装过程中不需要下载文件),并且包含完整的包集合。
需要注意的是,根据你的系统要求和服务器的预期用途,某些镜像可能比其他镜像更合适。对于资源有限的服务器,推荐使用最小化镜像,而对于资源较丰富且需求更广泛的服务器,推荐使用 DVD 镜像。以下是设置我们自己的服务器所需的系统要求:
-
处理器:需要一个 64 位处理器。
-
内存:建议至少 2GB 的内存,但对于高负载的服务器,推荐使用 8GB 或更多。
-
磁盘空间:建议至少 20 GB 的存储空间,但存储空间越大越好。
-
网络连接:需要网络连接以下载安装镜像并执行更新。
-
显卡:服务器不一定需要显卡,但如果你打算将服务器用于图形应用程序,建议配备显卡。
-
操作系统:运行虚拟机管理程序需要 64 位版本的 Windows、macOS 或 Linux。
现在我们已经了解了系统要求,第一步是打开一个网页浏览器并访问 www.google.com:
- 在搜索栏中输入
download CentOS ISO并按 Enter 键。这将打开 CentOS 的官方网站,网址是www.centos.org/(见 图 1.1)。

图 1.1 – Google 搜索
- 我们的第二步是选择适用于所有架构的 x86_64 选项:

图 1.2 – x86_64 架构
- 接下来,我们选择适合我们区域的可用链接。正如图中所示,我选择的是
mirror.web4africa.ng/centos/8-stream/isos/x86_64/:

图 1.3 – 按区域选择
从索引CentOS-Stream-8-x86_64-20221222-dvd1.iso的 DVD 版本。正如我们之前所读,DVD 镜像包含了所有在发行版中包含的软件包,这意味着它可以用于执行本地安装。

图 1.4 – DVD 下载页面
下载完镜像后,我们需要下载一个虚拟机管理程序。
下载和设置虚拟机管理程序
在这一部分,我们将介绍下载和设置虚拟机管理程序的过程。虚拟机管理程序是允许你在物理主机上创建和运行虚拟机的软件。这是系统管理员的基本知识,因为它提供了更多的灵活性和资源管理。市面上有多种虚拟机管理程序,如 VMware、VirtualBox 和 Hyper-V。本书将以 VMware 为例进行说明。

图 1.5 – VMWare(工作站 16 专业版)
下载和设置虚拟机管理程序的步骤如下:
- 第一步是从官方网站下载 VMware 软件:

图 1.6 – 下载 VMWare 工作站
- 确保下载适用于你操作系统的正确版本。下载完成后,你需要在物理主机上安装软件。这个过程非常简单,只需按照安装过程中提示的步骤进行操作。

图 1.7 – 设置中
安装完成后,你需要创建一个新的虚拟机。
- 我们将使用 自定义 配置向导。这个过程涉及指定虚拟机的内存、存储空间和网络设置。

图 1.8 – 自定义配置向导
- 配置虚拟机硬件兼容性设置如下:

图 1.9 – 硬件兼容性设置
- 选择操作系统安装介质,然后选择我将稍后安装操作系统选项,以进行手动设置过程:

图 1.10 – 选择操作系统安装介质
- 为虚拟机提供名称并选择位置。

图 1.11 – 选择虚拟机名称
- 选择来宾操作系统:

图 1.12 – 选择来宾操作系统
- 分配处理器资源:

图 1.13 – 指定分配的处理器数量
- 为虚拟机分配内存。计算内存分配时应与处理器分配方法相同。确保主机系统有足够的内存,并将剩余内存分配给虚拟机。此示例中,我们将选择 8 GB 或更多内存。

图 1.14 – 指定内存大小
-
配置网络设置。选择符合需求的网络配置,或者直接选择默认的 NAT 网络。为什么要这么做?
网络地址转换(NAT)在 VMware 中是一种网络功能,允许虚拟机使用主机计算机的 IP 地址访问互联网和其他网络资源。这个功能为没有自己 IP 地址的虚拟机提供了一种安全且便捷的方式来访问互联网。在 NAT 模式下,虚拟机的网络流量在虚拟网络和主机的物理网络之间透明地进行转换,使虚拟机能够像直接连接到物理网络一样访问网络资源。NAT 常用于虚拟化环境中的测试和开发,在这些环境中,虚拟机需要访问互联网以下载软件、更新等,但不需要公共访问。

图 1.15 – 网络类型
-
选择 I/O 控制器类型。
SCSI 控制器类型是用于控制虚拟磁盘的控制器类型。下图包含了这些选项:
-
BusLogic:这种控制器类型不适用于 64 位的来宾操作系统。它是一种较旧的控制器类型,目前已不再常用。
-
LSI Logic(推荐):这种控制器类型推荐用于大多数来宾操作系统。它是较新的控制器类型,提供比 BusLogic 控制器更好的性能和兼容性。
-
LSI Logic SAS:此控制器类型设计用于与串行附加 SCSI(SAS)磁盘一起使用。它提供比 LSI Logic 控制器更好的性能,但并不被所有客户操作系统广泛支持。
-
并行虚拟化 SCSI:此控制器类型是一种高性能控制器,设计用于 VMware 客户操作系统。它要求客户操作系统安装特殊的驱动程序。
如果您不确定选择哪个 SCSI 控制器类型,建议使用 LSI Logic 控制器。它是一种多用途控制器,广泛支持客户操作系统。
-

图 1.16 – I/O 控制器类型
-
选择磁盘类型。
以下截图显示了新虚拟机向导窗口中可用的不同磁盘类型选项。选项如下:
-
集成驱动电子(IDE):这是一种较旧的磁盘类型,比 SATA 和 NVMe 等新型磁盘慢。但它仍然被大多数客户操作系统支持。
-
小型计算机系统接口(SCSI):这比 IDE 更快。它还更具多功能性,可以支持多个磁盘和设备。
-
串行 ATA(SATA):这是目前最常见的磁盘类型。它比 IDE 和 SCSI 更快、更可靠。
-
开放非易失性内存表达式(ONVMe):这是最新和最快的磁盘类型。它仍在开发中,但在高性能服务器和工作站中越来越受欢迎。
如果您运行的客户操作系统支持更新的磁盘类型,如 SATA 和 NVMe,建议选择这些磁盘类型。它们将提供更好的性能和可靠性。
-

图 1.17 – 磁盘类型
- 选择虚拟磁盘(如果已有虚拟磁盘,则选择,或创建一个新磁盘)。

图 1.18 – 创建新的虚拟磁盘
- 指定磁盘容量。推荐的磁盘空间为 20 GB,但我们将分配 30 GB 的空间,以确保虚拟机有足够的空间。请确保勾选将虚拟磁盘存储为单个 文件选项。

图 1.19 – 设置磁盘容量
- 定义虚拟磁盘文件。

图 1.20 – 指定磁盘文件
- 通过选择完成来创建虚拟机。

图 1.21 – 准备创建虚拟机
- 接下来,为了在 VMware Workstation 上启动 CentOS 安装,请为虚拟机提供 CentOS ISO 镜像。完成此操作后,点击启动此虚拟机选项。这将创建一个新的虚拟机并根据您提供的规格进行配置。

图 1.22 – 选择 ISO 镜像文件
安装完成后,您将启动新创建的虚拟机,它将启动并准备使用。此过程将使您能够在虚拟环境中运行一个完全功能的 CentOS 安装,使您能够轻松测试、运行并管理单台物理机器上的多个操作系统。
下一步是启动虚拟机。这将启动新安装的操作系统,并允许您开始配置和使用它。确保虚拟机在启动之前已正确配置非常重要。这包括验证网络配置、内存和处理器分配以及磁盘空间的可用性。一旦确认所有必要的参数都已正确设置,您可以通过点击 VMware Workstation 中的开启按钮来启动虚拟机。这样我们就可以进入配置过程的下一阶段。
- 我们将从选项列表中选择安装 CentOS Stream 8-Stream。在选项之间导航时,使用箭头键并按 Enter 键来选择所需的选项。

图 1.23 – 启动 CentOS 8-Stream
- 成功启动 CentOS 安装后,您将看到一个欢迎屏幕,提供选择偏好语言的选项。只需选择所需语言并点击继续以继续操作。

图 1.24 – 选择你偏好的语言
- 为了继续安装 CentOS,设置一些参数非常重要,如键盘布局、语言支持、时间和日期设置、要安装的软件包、root 密码、安装介质以及磁盘分区信息。这些参数将确保顺利和成功的安装。

图 1.25 – 安装总结
- CentOS 8 的安装向导可以在安装过程之前自动检测到所有本地可访问的网络接口。这些接口将显示在左侧窗格中(见 图 1.26),允许您轻松选择所需的网络,并根据您的具体需求将其配置为活动或非活动状态。此步骤确保在安装过程中为系统建立正确的网络连接。

图 1.26 – 网络和主机名页面
- 在配置好所有必要的设置后,是时候开始安装过程了。点击开始 安装按钮:

图 1.27 – 开始安装按钮
当安装过程开始时,安装向导将开始安装 CentOS。根据系统速度和所选配置,过程可能需要几分钟才能完成。请注意进度条,以跟踪安装进度。

图 1.28 – 安装进度
- 在 CentOS 成功安装后,重启虚拟机非常重要,以确保安装过程中所做的所有更改生效。这将有助于初始化新安装的操作系统并使其准备好使用。要重启虚拟机,只需选择重启系统按钮从系统菜单中重启,并等待机器完成重启过程。

图 1.29 – 重启系统按钮
- 重启虚拟机后,在 GRUB 菜单中选择第一个选项,以便成功启动到已安装的 CentOS 操作系统。

图 1.30 – CentOS 8 GRUB 菜单
- 另一个重要步骤是阅读并接受许可信息,因为这是继续启动过程所必需的。

图 1.31 – 接受许可信息
- 在接受许可信息后,过程的最后一步是通过点击完成配置按钮来完成配置。此操作将最终确定设置和配置过程,并使系统能够启动到新安装的 CentOS 操作系统。

图 1.32 – 完成配置
- 使用你的凭据登录到新安装的 CentOS Linux 系统。

图 1.33 – 登录
- 登录后,选择开始使用 CentOS Linux选项,开始使用操作系统的全部功能。

图 1.34 – 准备就绪
推荐尽早以 root 超级用户身份登录,并运行下一节中的命令,以确保新安装的 CentOS Linux 系统拥有最新的更新和修复。
软件包安装命令
软件包安装命令用于 CentOS 系统上安装和管理软件包。CentOS 中的软件包管理系统称为Yellowdog Updater Modified(YUM),它提供了一种集中化的方法来管理和安装软件包。
YUM 软件包管理系统
YUM 是 CentOS 的默认软件包管理器。它通过解决依赖关系并下载所需的软件包,使得管理软件包变得更加容易。使用 YUM,用户可以根据需要安装新软件包、更新现有软件包和移除软件包。YUM 提供了一个命令行界面,允许用户从终端管理软件包,也提供了一个图形用户界面,方便那些喜欢可视化操作的用户。
常见的软件包安装命令
与 YUM 一起使用的最常见命令包括yum install用于安装新软件包,yum update用于更新现有软件包,以及yum remove用于移除软件包。此外,yum list可以列出所有可用软件包,yum search可以用于搜索软件包。需要记住的是,在使用 YUM 管理软件包时,必须保持活动的互联网连接,并且需要以 root 用户或具有管理员权限的身份运行这些命令。
以下命令是每个系统管理员应该 了解的 100 个 Linux 命令的起点:
yum upgrade:yum upgrade命令用于 CentOS Linux,将所有已安装的软件包升级到最新版本。该命令通过更新系统的最新软件包、修复错误和提供安全补丁来确保系统保持安全和稳定。yum upgrade命令在终端中执行,并且通常需要以管理员权限(通常是 root 用户)执行。通过运行此命令,系统将升级所有已安装的软件包,并解决在升级过程中可能出现的任何依赖关系或冲突。

图 1.35 – 升级服务器
yum update:这个软件包管理工具用于 CentOS 和其他 Linux 发行版,用于升级和更新系统软件包。它从软件源下载最新的软件包更新并将其安装到系统上,确保你的系统拥有最新的安全补丁和错误修复。定期运行yum update是系统维护的重要部分,因为它有助于保持系统安全和流畅运行。

图 1.36 – 更新服务器
reboot:此命令用于重启运行 Unix 系统(如 Linux)的计算机。它用于应用对系统所做的更改或在完成某个过程后刷新系统。该命令可以由具有 root 或超级用户权限的用户执行。执行该命令后,系统将启动重启序列,所有正在运行的进程将被终止。然后,系统将重新启动。reboot命令通常在完成系统更新或升级后使用,以确保更改已被应用。

图 1.37 – 重启服务器
信息命令
CentOS 为系统管理员提供了一系列命令,用于获取关于系统各个方面的信息,包括硬件、软件、网络和用户。这些命令是监控和排除系统及其组件故障的基本工具,提供了有关系统当前状态、配置和性能的深入见解。通过获取系统的准确信息,系统管理员可以快速识别和解决问题,确保系统的最佳性能和稳定性。这些命令分别提供有关系统主机名、磁盘使用情况、进程、CPU 和网络接口的信息,因此对于需要诊断和解决系统问题的系统管理员来说,它们是非常有价值的工具。
这里列出了一些在 CentOS 中常用的信息命令:
uname:uname命令用于显示操作系统和系统主机名的信息。该命令还可以显示硬件类型、操作系统版本和内核的发布号。

图 1.38 – 显示操作系统
uname命令带有不同的标志,可以执行。例如,-a参数显示所有信息,包括系统名称、网络节点主机名、内核发布、版本和机器硬件名称,如下所示的终端输出:

图 1.39 – 显示所有系统信息
lsb_release:lsb_release命令用于显示有关Linux 标准基础(LSB)版本、发行商 ID 和发布号的信息。LSB 是一个定义 Linux 操作系统的标准,确保不同 Linux 发行版之间的兼容性。

图 1.40 – 显示 Linux 标准基础版本
为了执行更多的标志,我们将使用管理员常用的一个标志来显示发行商指示符。

图 1.41 – 显示发行商指示符
hostnamectl:hostnamectl命令用于显示和修改系统主机名,并查看诸如操作系统架构、启动模式和系统时区等各种系统设置。这个命令在不需要以 root 用户身份登录系统的情况下修改主机名或查看系统设置时非常有用。

图 1.42 – 显示系统设置和架构
让我们执行带有另一个标志set-hostname的hostnamectl命令。这个标志用于将系统主机名设置为指定的值。例如,你可以执行hostnamectl set-hostname myhost:

图 1.43 – 设置系统主机名
本节中我们介绍的有用信息命令将帮助你收集关于系统的信息。在本章中,我们强调了正确进行服务器设置和安装的重要性,包括定期的软件升级和更新,以确保系统平稳运行并保持安全。通过遵循本章中概述的步骤,你将能够顺利设置一个可靠且安全的服务器,既适用于个人使用,也为进一步学习 Linux 系统管理打下基础。
总结
在第一章中,我们集中讨论了下载和设置服务器的步骤。我们首先讨论了下载服务器操作系统的过程,这是设置过程中的关键步骤。接着,我们深入探讨了下载和设置虚拟化平台的主题,虚拟化平台使得可以创建虚拟机。虚拟化平台为每个虚拟机提供一个隔离的环境,从而允许多个虚拟机在同一台物理服务器上运行。
接下来,我们讨论了包安装命令在服务器设置过程中的重要性。这些命令允许系统管理员从服务器安装、升级和移除包,这些包对于服务器的正常运行至关重要。我们还概述了如yum等一些常见的包安装命令。
最后,在第四部分中,我们强调了信息命令在服务器设置过程中的作用。这些命令提供了有关系统的重要信息,包括操作系统和硬件信息。我们介绍了 CentOS 中的三条常见信息命令,包括uname、lsb_release和hostnamectl,并描述了它们的用途和优点。这些信息命令对于监控和故障排除服务器以及确保其正常运行非常有用。
在下一章中,我们将深入探讨 Linux 用户和组的管理。此章节是系统安全、稳定性和资源分配的关键,涵盖了系统管理员管理用户和组所需的核心命令和工具。
第二章:Linux 用户和组命令
选择合适的 Linux 发行版非常重要,同样,理解 Linux 系统管理的关键组成部分也同样重要,包括 Linux 用户和组管理。Linux 操作系统允许管理员创建多个用户并分配不同的权限和组策略,从而确保系统的安全性、稳定性和资源分配。在本章中,我们将深入探讨 Linux 用户和组管理,并重点介绍 Linux 系统管理员用于管理用户和组的关键命令和工具。
Linux 用户和组命令的历史可以追溯到 Unix 操作系统的早期时期,当时用户和组管理是系统安全和资源分配的关键方面。随着开源运动的兴起,Linux 采纳了这些概念并加以扩展,允许对用户和组的权限、用户身份验证和访问控制等进行细粒度的控制。如今,Linux 用户和组命令构成了任何 Linux 系统的关键组成部分,为系统管理员提供了管理用户、分配权限并确保对敏感资源和数据安全访问的工具。
在本章中,我们将涵盖以下主要内容:
-
useradd、userdel 和 usermod
-
文件、目录和权限命令
-
groupdel、groupmod、groupadd 和 grpck
-
pwck、chage 和 passwd 命令
-
find、locate 和 whereis 命令
useradd、userdel 和 usermod
在 Linux 系统中,管理用户和组非常重要,以确保安全性和访问控制。useradd、userdel 和 usermod 命令是创建、删除和修改 Linux 系统用户的基本工具。这些命令允许管理员创建用户账户、分配权限,并限制资源访问。了解如何使用这些命令对于管理 Linux 系统中的用户至关重要。无论你是设置单用户系统还是企业级环境,useradd、userdel 和 usermod 命令都是 Linux 管理员必不可少的工具。我们将详细探讨这些命令,包括它们的用法、选项和示例,以便让你全面了解 Linux 系统中的用户管理。
这些工具——useradd、userdel 和 usermod——是 Shadow Password Suite 的一部分,通常用于 Linux 系统来管理用户账户。正确使用这些工具对于确保 Linux 系统的安全性和稳定性至关重要。虽然这些工具主要用于 Linux 系统,但它们也可以在其他类 Unix 系统中使用。
我们将详细讲解它们的使用,包括每个命令的选项和语法。我们还将讨论管理 Linux 系统用户账户的最佳实践,例如创建标准用户账户并使用 sudo 执行管理任务。现在,让我们在接下来的小节中深入了解这些命令。
useradd
Linux 中的useradd命令用于创建新的用户账户或更新现有账户。它是一个强大的工具,可以用来以多种方式管理用户账户,从分配主目录和默认 shell 到设置用户密码和过期日期。当创建新用户账户时,useradd需要提供一些信息,例如用户名,useradd还可以用来定制用户账户。例如,可以使用-m选项为用户创建主目录,而-s选项指定用户的默认 shell。-c选项可以用于向用户账户添加注释或描述,这有助于识别账户的用途。创建用户账户后,可以使用usermod命令对其进行修改。该命令用于修改用户的账户信息,例如密码或过期日期。它还可以用来将用户添加或移除出某些组、改变用户的默认 shell 等。useradd命令的基本语法如下(注意,你需要sudo权限才能成功运行该命令):
useradd command:

Figure 2.1 – useradd usage and options
To create a new user account named `tester1` and a corresponding home directory, as well as displaying the UID, use the following command:

Figure 2.2 – Creating a user and a home directory for the user
The `-m` option tells the system to create the home directory, which is where the user will store their files and settings. The purpose of creating a home directory for a new user is to ensure that they have their own space on the system to work in and allow them to store files and customize their environment without affecting other users. Additionally, it provides a place for the user to store configuration files and other settings that are specific to their account.
We also introduced another command, `id`, in the process of creating a new user.
The `id` command from the preceding example is a Linux/Unix command that is used to display the UID and GID of our `tester1` user account. When used with a specific username as an argument, such as `id username`, the `id instructor` command will display output similar to the following if the `instructor` user exists on the system:

Figure 2.3 – Displaying the ID
We can also check the existence of this user in the `/``etc/passwd` file:
instructor❌1000:1000:instructor:/home/instructor:/bin/bash
tester1❌1001:1001::/home/tester1:/bin/bash
The following screenshot shows the result:

Figure 2.4 – Evidence of the existence of the users
The following are the details of the user information in the preceding figure:
* `tester1`: Username
* `1001`: UID
* `1001`: GID
* `/home/tester1`: User’s home directory
* `/bin/bash`: Login shell
* `:`: Separator
* `::`: A password-less user account
* `x`: The stored password in the `/``etc/shadow` file
userdel
`userdel` is a Linux command used to delete a user account and its associated files and directories. It’s important to note that when a user account is deleted using `userdel`, all the files and directories under the user’s home directory are also deleted. Therefore, `userdel` should be used with caution to avoid the accidental deletion of important files. The command requires root privileges, and the syntax is `userdel [options] username`. The most commonly used option is `-r`, which removes the home directory and mail spool of the deleted user. When deleting a user with `userdel`, it’s important to make sure that the user account is no longer needed. It’s also important to consider the impact that deleting the user account will have on any applications or services that rely on the user account. This is especially true if the user account is used for system administration or runs any critical services. In such cases, it’s important to create a backup or a copy of the user’s files and directories before deleting the account.
Another consideration when using `userdel` is that it only deletes the user account from the system’s user database. Any processes that were started by the user before the account was deleted will continue to run until they are finished or manually stopped. It’s also possible that some system files or configuration files might still reference the deleted user, which could cause issues in the future.
The following screenshot shows the usage and options of the `userdel` command:

Figure 2.5 – userdel usage and options
To delete the `tester2` user, you would run the following command:

Figure 2.6 – Deleting the user account
As we observe the deletion of the `tester2` entry from the `/etc/passwd` file, we can also confirm whether the `tester2` user’s home directory is still accessible:

Figure 2.7 – Switching to the user’s home directory
When you run the `userdel` command, it removes the user’s entry in the `/etc/passwd` file and the user’s group, but it does not remove the user’s home directory, `/home/tester2`. To remove a user and their home directory simultaneously, execute the `userdel` command followed by the `-r` option. Attempting to switch to the deleted user’s home directory will not be successful, as it has been removed. This can be verified by the following example:

Figure 2.8 – Deleting the user and the home directory
Here are the steps we took:
1. Deleted the user and the home directory using the `-``r` flag
2. Verified whether we could do a switch to the user for confirmation
3. Checked whether we could switch to that user’s home directory
Overall, `userdel` is a powerful command that should be used with caution. It’s important to ensure that the user account being deleted is no longer needed and that all necessary backups and precautions have been taken to avoid data loss or system issues.
usermod
The `usermod` command is a powerful Linux administration tool that allows system administrators to modify user account information. This includes changes to the user’s home directory, login shell, UID, GID, and other account properties. Additionally, `usermod` can be used to add or remove user groups, set password-aging policies, and more. This tool helps system administrators to manage user accounts on a Linux system effectively.
To use `usermod`, the command is followed by options that specify the changes to be made. For example, to add a user to a specific group, the `-aG` option is used, followed by the group name. Similarly, to change the user’s home directory, the `-d` option is used, followed by the new directory path. When making changes to a user’s account, it is important to consider the impact that the changes will have on the system and other users.
`usermod` also has a useful feature that allows for the modification of multiple user accounts at once using a script or a list of usernames. This feature saves time and effort when making changes to a large number of user accounts. However, it is important to use `usermod` with caution, as improper use of the command can result in unintended consequences or even system damage. We’ll take a look at execution examples using `usermod`:
* `tester1` to the `developers` group and verify that the user has been added to the group. You can use the following command:

Figure 2.9 – Adding a user to a group
* `tester1` to `/home/tester1_new`. You can use the following command:

Figure 2.10 – Changing the user’s home directory
* `tester1`, you can use the following command:

Figure 2.11 – Locking a user
The exclamation mark indicates that the `tester1` account is locked. If the account is not locked, the second field will contain the password hash for the user’s password.
Now let’s unlock the `tester1` user:

Figure 2.12 – Unlocking a user
* `tester1` to `1001` and the GID to `1002`. You can use the following command:

Figure 2.13 – Changing a user’s UID and GID
This will change the UID of the user `tester1` to `1001` and the GID to `1002`.
Files, directories, and permission commands
Files and directories are organized in a hierarchical structure, with the `root` directory as the top-most level. Each file and directory has a set of permissions that determine who can read, write, or execute it. The file permissions are divided into three categories—user, group, and others:
* **user**: This refers to the owner of the file
* **group**: This refers to a group of users assigned to the file (e.g., developers)
* **others**: This refers to anyone else who is not the owner or part of the assigned group
Let’s take a look at the hierarchical structure:

Figure 2.14 – Linux files and directory hierarchical structure
To manage file and directory permissions in Linux, there are several command line tools available. Some of the commonly used commands include `chmod`, `chown`, and `chgrp`.
chmod
The `chmod` command is used to change the permissions of a file or directory. To recursively change the permissions of all files and subdirectories within a directory, we can use the `-R` flag of the `chmod` command. This flag is essential for applying permissions changes to all contents within a directory.
However, the suggested text after that doesn’t seem to directly address the significance of the `700` permission setting.
For example, in the following screenshot, `700` signifies that the owner of the `Confidential_files` directory has `7`), while the group and others have no permissions (`0`). This configuration ensures that only the owner can access, modify, or execute files within the directory, providing a high level of security for sensitive information:

Figure 2.15 – Granting the owner RWX permissions
chown
The `chown` command is used to change the owner and group of a given file or directory. To change the owner and group of a directory, we must pass both arguments separated by the `:` sign. Just like the `chmod` command, you can replicate the new settings recursively by adding `-R` to the command:

Figure 2.16 – Changing the owner and group of a directory
This command changes the owner and group of the directory located at `/home/instructor/Documents/office-docs/` along with all its content recursively. The `-R` option stands for **recursive**.
chgrp
`chgrp` is used to change the group of a file or directory without touching the owner’s permission. To change the group ownership of a directory named `project-001` and all of its contents to a group named `developers`, use the following command:

Figure 2.17 – Changing the group ownership of a directory
Security is also an essential aspect of file and directory management in Linux. System administrators must ensure that files and directories are secured and only accessible to authorized users. This can be achieved by implementing access control measures such as using strong passwords and configuring user access permissions appropriately.
groupdel, groupmod, groupadd, and grpck
Group management is an important aspect of Linux system administration. Groups are used to organize users and define their access privileges to files and directories on the system. The four main commands used for group management are `groupadd`, `groupmod`, `grpck`, and `groupdel`.
`groupadd` is used to create a new group on the system. To use this command, type `groupadd` followed by the desired options and the new group name. For example, to create a new group called `DevSec-group`, the command would be `groupadd DevSec-group`:

Figure 2.18 – Adding a new group
This command will create a new group with the default settings, including a new GID.
Now that we’ve created our groups, let’s do some modifications such as changing its membership using the `groupmod` command. This is a command used to modify an existing group on the system. This command can be used to change the group’s name, GID, or membership. To modify a group, type `groupmod` followed by the desired options and the group name. For example, to change the name of the group `DevSec-group` to `DevSec-group-new`, the command would be `groupmod -n` `DevSec-group-new DevSec-group`:

Figure 2.19 – Modifying an existing group
Our next command is `grpck`, which is used to check the integrity of the group files on the system. This command will check the group file (`/etc/group`) and make sure that all groups listed in the file have valid entries in the password file (`/etc/passwd`). To use this command, simply type `grpck -``r /etc/passwd`:

Figure 2.20 – Checking the integrity of the /etc/passwd file
Lastly, the `groupdel` command is used to delete a group from the system. To use this command, simply type `groupdel` followed by the group name. For example, to delete a group called `DevSec-group-new`, the command would be `groupdel -``f DevSec-group-new`.

Figure 2.21 – Deleting a group
This command will remove the group from the system. The `-f` option is used to force the deletion of the group, along with any users who were assigned to that group.
Overall, group management is a critical aspect of Linux system administration. Proper management of groups can ensure the security and accessibility of files and directories on the system. The four main commands used for group management, `groupdel`, `groupmod`, `groupadd`, and `grpck`, provide system administrators with the necessary tools to effectively manage groups on a Linux system.
pwck, chage, and passwd commands
The `pwck` command is a Linux system administration tool that is used to verify the consistency of the `passwd`, `shadow`, and `group` files. The purpose of the command is to ensure that the user accounts and groups listed in these files are valid and to detect any inconsistencies between them. It is useful in maintaining the integrity and security of a Linux system, as it can help to identify and correct errors that may arise due to manual edits of these files. For example, if a user account exists in the `passwd` file but not in the `shadow` file, `pwck` will detect this and prompt the user to fix the inconsistency. Let’s take a look at some examples using this tool:
* Verify the consistency of the `passwd` file with `sudo` `pwck /etc/passwd`.
The following output from the `pwck` command checks the consistency of the `/etc/passwd` file on our Linux system:

Figure 2.22 – Checking the consistency of the /etc/passwd file
* Check the consistency of the `shadow` file:

Figure 2.23 – Checking the consistency of /etc/shadow file
The `invalid password file entry` message for the `instructor` user suggests deleting the invalid line for the `instructor` user account. However, we can keep the `instructor` user and resolve the error without deleting the invalid line by correcting it to ensure that it is properly formatted.
First, open the `/etc/shadow` file with the `vipw` command to edit the `/etc/passwd` and `/etc/shadow` files, or their respective shadow versions (`/etc/gshadow` and `/etc/gshadow`), with `vigr`. Locate the line that corresponds to the `instructor` user or any user you created and correct any syntax errors.
Using `vipw` and `vigr` is the recommended and safer approach to editing these critical system files, as these commands are specifically designed for this purpose and set appropriate locks to prevent file corruption.
The line should contain nine fields separated by colons (`:`). We’ll fix this error using our next command. Overall, the purpose of the `pwck` command is to ensure that the user and group information stored on a Linux system is accurate and consistent:
username:password:lastpasswordchanged:minpasswordage:maxpasswordage:passwordwarningperiod:inactivityperiod:expirationdate:reservedfield
The `chage` command is a Linux system administration tool that is used to change the aging and expiration policy of a user’s password. The purpose of the command is to enforce password policies and increase the security of a system by setting limits on the age of a password, the time between password changes, and the maximum number of failed logins attempts before a user is locked out. This helps to ensure that passwords are changed regularly and that users are prompted to create strong and secure passwords. Now, let’s use this command to correct our error.
We’ll use the `chage -d 2023-12-1 instructor` command to set the date of the last password change for the `instructor` user to December 1st, 2023\. The `-d` option in the `chage` command is used to set the date of the last password change. By default, the last password change date is set to the current date, but using the `-d` option allows you (the admin) to set it to a specific date. In this case, the date is set to December 1st, 2023.
`chage -E 2023-12-31 instructor` is used to set the account expiration date for a specific user. The `-E` option is used to specify the expiration date, and the `2023-12-31` argument is the date when the account will expire. The `instructor` parameter at the end of the command is the username of the account that we want to set the expiration date for.
The `chage -l instructor` command shows the password aging information for the user account named `instructor`:

Figure 2.24 – Using chage
It displays the following information:
* **Last password change date**: This shows the date when the password for the account was last changed
* **Password expiration date**: This shows the date when the current password will expire
* **Password inactive date**: This shows the date when the password will be disabled and the account will no longer be accessible
* **Account expiration date**: This shows the date when the account will expire and be disabled
* **Minimum password age**: This shows the minimum number of days that must pass before the password can be changed
* **Maximum password age**: This shows the maximum number of days that the password can be used before it must be changed
* **Password warning period**: This is the number of days before the password expiration date that a warning is given to the user
`chage` is a very powerful command that’s useful for every system administrator who wants to improve the security of their systems by enforcing strong password policies.
The `passwd` command, on the other hand, is used to manage user passwords, allowing users to change their own password, while administrators can use it to change the password of another user. Its purpose is to ensure that user passwords are secure and that the password policies are enforced. The following are some examples:
* Configure password policies.
The `/etc/security/pwquality.conf` file is used to configure password quality-checking policies. It defines rules and settings that control the complexity and strength of user passwords. This file is used by the `sudo` privileges, you can locate and edit the `/etc/security/pwquality.conf` file using the Vim editor. Here are the specific requirements for password quality configuration you need to follow:
* `minlen` = `8` or `16` (for the sake of this example we selected `8`)
* `minclass` = `3`
* `maxrepeat` = `2`
* `minsequence` = `4`
* `maxclassrepeat` = `4`
* `reject_username` = `true`

Figure 2.25 – Editing /etc/security/pwquality.conf
Here’s a brief summary of the configuration parameters:
* `minlen`: This specifies the minimum length of a password (eight characters)
* `minclass`: This sets the minimum number of character classes required (three classes, e.g., lowercase, uppercase, and digits)
* `maxrepeat`: This limits the maximum number of consecutive identical characters (two consecutive identical characters are allowed)
* `minsequence`: This sets the minimum length of a sequence (four characters, e.g., ‘1234’ or ‘abcd’)
* `maxclassrepeat`: This limits the maximum number of consecutive characters from the same character class (four consecutive characters from the same class are allowed)
* `reject_username`: This ensures that the password does not contain the username
* Change the password of a specific user:

Figure 2.26 – Changing a user’s password
* Lock a user’s password:

Figure 2.27 – Locking a user’s password
* Unlock a user’s password:

Figure 2.28 – Unlocking a user’s password
Unlocking a user’s account with the `passwd -u tester1` command is a crucial part of managing user account settings in Linux. In our next topic, we’ll explore techniques for discovering and locating files and identifying them within the Linux filesystem.
find, locate, and whereis commands
One of the most common tasks in Linux system administration is finding files. In CentOS 8, there are several commands that you can use to find files based on different criteria. The most commonly used commands for finding files are `find`, `locate`, and `whereis`. Each command has its own syntax and options, making them suitable for different use cases.
The `find` command is used to search for files and directories based on various criteria such as name, size, type, and modification time. Here’s an example of how to use the `find` command to search for all files with the `.txt` extension in the current directory and its subdirectories:

Figure 2.29 – Finding files with the .txt extension
The first argument of the command is the starting directory for the search. In our example, the dot `.` character means “current directory,” and `-name` is used to specify the filename pattern to match. The `*` character is a wildcard that matches any number of characters, and `*.txt` matches all files that end with `.txt`.
The `locate` command, on the other hand, uses a pre-built database to search for files based on name or pattern. The advantage of `locate` over `find` is that it’s much faster since it searches a pre-built database.
Here’s an example of how to use the `locate` command to find all files with `sensitive` in their names:

Figure 2.30 – Using the locate command to find all files
Finally, the `whereis` command is used to locate the binary, source, and manual page files for a given command. Here’s an example of how to use the `whereis` command to find the location of the `ls` command:

Figure 2.31 – Locating binary, source, and manual page files for the ls command
Here’s another example using `whereis` to find the location of the `passwd` command:

Figure 2.32 – Locating binary, source, and manual page files for the passwd command
These commands are essential tools for managing and locating files on a Linux system. By mastering these commands, you can easily search for and identify files based on various criteria and improve your productivity as a system administrator.
Summary
In this chapter, we explored Linux user and group management, a crucial aspect of system security, stability, and resource allocation. We began by introducing the concept of user management and explained how to use commands such as `useradd`, `userdel`, and `usermod` to add, remove, and modify users on a Linux system. We also covered how to verify and set password expiration using the `pwck`, `chage`, and `passwd` commands, ensuring that user accounts remain secure.
The second section focused on file permissions and security basics, essential knowledge for any system administrator. We discussed the various file and directory permissions and how to use commands such as `chmod` and `chown` to modify them. In the third section, we delved into group management and covered commands such as `groupadd`, `groupmod`, `groupdel`, and `grpck`. We explained how groups allow for the efficient management of multiple users with similar permissions and access, and we learned how to use these commands to create and modify groups on a Linux system.
Moving on to the fourth section, we discussed the `pwck` `and` `chage` commands, which are used to verify the integrity of user and password files and set password expiration policies, respectively. We also covered the `passwd` command, which is used to change user passwords. Finally, the fifth section, *find, locate, and whereis commands*, covered how to locate files in directories and print their location using the `find`, `locate`, and `whereis` commands, which are particularly useful for system administrators who need to quickly locate files on a Linux system.
The next chapter delves into the topic of file compression and archiving in Linux. Through this chapter, readers will gain an understanding of how to use various commands such as `gzip`, `tar`, `zip`, and more to compress and decompress files.
第三章:文件压缩和归档命令
文件压缩和归档命令已成为现代计算的一个重要部分。随着数据量的不断增加和共享,使用压缩技术来减小文件大小,方便存储、传输和共享,已变得越来越必要。这个过程涉及使用软件工具通过去除文件中的不必要数据来压缩文件。压缩后的文件可以存储在更小的空间内,或者通过互联网更快速地传输。
在 Linux 中,有多种文件压缩和归档命令,包括 gunzip 和 gzip、tar、rar 和 unrar、zip 和 unzip、bunzip2 和 bzip2 等等。每个命令都有其独特的特点、优点和限制,使它们适用于特定的使用场景。例如,gzip 命令是一个简单易用的压缩工具,可以快速压缩文件。另一方面,tar 是一个流行的工具,用于创建和管理 tar 包,可以将多个文件打包成一个归档文件。在本章中,我们将探讨这些命令及其他相关工具,向读者提供 Linux 中不同压缩和归档选项的概览。
在本章中,我们将涵盖以下主要主题:
-
gunzip 和 gzip
-
tar、rar 和 unrar
-
zip 和 unzip
-
bunzip2、bzip2 等
gunzip 和 gzip
gunzip(gzip)命令用于压缩文件并创建一个带有 .gz 扩展名的压缩文件,而 gunzip 命令则用于解压这些 .gz 文件。这些命令对于需要通过压缩文件和文件夹来节省磁盘空间的系统管理员尤其重要,同时也有助于通过减少带宽使用来传输文件。
除了实际的好处外,gunzip 和 gzip 命令在维护系统安全方面也至关重要。压缩文件可以被用来隐藏恶意代码,因此系统管理员必须能够快速、轻松地扫描压缩文件,寻找安全威胁。gzip 命令还包括设置文件权限和修改文件时间戳的选项,使系统管理员能够更精细地控制文件的访问和修改。
gunzip 是一个命令行工具,用于解压使用 gzip 工具压缩的文件。该工具用于从 .gz 文件中提取压缩数据并将其恢复到原始状态。该命令对系统管理员至关重要,因为它有助于减小文件大小并节省磁盘空间。此外,该命令还可以在通过网络传输文件时进行压缩和解压,从而减少使用的带宽。通过一个基于场景的示例,我们可以更好地理解 gunzip 的基本用法。
假设系统管理员收到一个名为 largefile.txt.gz 的压缩文件,该文件来自其他团队成员,包含他们需要访问的重要数据。然而,由于文件过大,无法通过电子邮件或其他消息平台传输。为了访问文件中的数据,管理员需要使用 gunzip 命令将其解压。以下是操作方法:
- 首先,导航到压缩文件所在的目录。例如,如果文件位于
/home/instructor/Desktop/administrator/data目录下,可以通过在终端中运行以下命令来进入该目录:

图 3.1 – 导航到文件位置
- 接下来,使用
gunzip命令解压文件。我们可以通过在终端中运行以下命令来实现:

图 3.2 – 使用 gunzip 解压大文件
这将解压文件并将其恢复到原始状态,然后我们可以使用自己喜欢的文本编辑器或其他工具来访问文件中的数据。
gzip 是一个命令行工具,用于压缩和解压文件。它通常在 Linux 和 Unix 系统中使用,用于减小文件的大小以便存储或传输。gzip 命令通过使用压缩算法将文件压缩成更小的尺寸,从而更方便存储或传输文件,因为它占用更少的空间。
gzip 命令是系统管理员的重要工具,因为它可以帮助管理员更高效地管理大文件。例如,如果系统管理员需要通过互联网传输一个大文件,他们可以使用 gzip 命令先压缩文件再发送。这样可以减少文件传输所需的时间,并且减少所需的带宽。我们来看以下两个示例:
- 系统管理员希望压缩一个名为
app.log的日志文件,该文件位于/var/log目录下。管理员可以使用以下命令来压缩该文件:

图 3.3 – 使用 gzip 压缩日志文件
这将创建一个名为 app.log.gz 的压缩文件,存放在相同的 /var/log/ 目录下:

图 3.4 – 将压缩的 app.log.gz 文件从 1 GB 压缩到 1.0 MB
- 系统管理员希望压缩位于
/home/instructor目录下的名为backup的目录。这个目录压缩过程通常被称为创建一个“tarball”,它是将多个文件或目录打包并压缩成一个归档文件的常用方法。管理员可以使用以下命令来压缩backup目录:

图 3.5 – 压缩名为 backup.tar.gz 的目录
这将创建一个名为 backup.tar.gz 的压缩文件,保存在相同的目录中。tar 命令也将在我们的下一个主题中介绍。前面命令中提供的 czvf 选项用于创建一个 gzip 格式的压缩归档。
选项如下:
-
创建一个归档
-
使用
gzip压缩归档 -
显示进度信息
-
指定归档文件的名称
tar、rar 和 unrar
tar、rar 和 unrar 命令是系统管理员必不可少的工具,提供了压缩和归档文件的能力,以便更高效地存储和传输。通过这些命令,管理员可以将多个文件和目录打包成一个归档文件,然后对其进行压缩以节省更多空间。这些归档文件随后可以在系统之间传输、备份到远程存储或为将来使用存储。
tar 命令对于创建归档文件特别有用,因为它允许管理员指定一系列的压缩和文件组织选项。另一方面,rar 和 unrar 命令是 RARLAB 开发的专有工具,用于创建和解压 RAR 归档文件。这些命令在 Windows 环境中被广泛使用,但也可以通过适当的安装在 Linux 系统上使用。
总体来说,tar、rar 和 unrar 命令大大简化了系统管理员管理和组织文件的过程。通过将文件打包成归档文件并进行压缩以提高存储和传输效率,这些命令使得在多个系统之间管理大量数据变得更加容易。
tar 是 tar 命令的简称,允许用户使用以下语法将多个文件和目录打包成一个文件:
tar [options] [archive-file] [file or directory to be archived]
这个归档文件可以很容易地压缩、传输和备份。
这个工具非常重要,因为它简化了创建和管理备份的过程,并且允许用户轻松地与他人共享文件。
tar 的一个常见用例是为系统上的重要文件和目录创建备份。例如,系统管理员可以使用 tar 命令在对系统进行重大更改之前,先创建关键配置文件和目录的备份。在这种情况下,tar 命令可以用来将所有必要的文件和目录打包成一个归档文件,然后将其存储在单独的备份设备上,或者传输到远程位置以便保存。tar 的另一个用例是用于分发软件包。开发者可以使用 tar 将软件包所需的所有文件和目录打包成一个归档文件,之后可以轻松地分发给最终用户。
系统管理员可能需要通过网络将一个大文件或目录传输到另一个服务器。在这种情况下,可以使用tar命令将必要的文件和目录打包成一个压缩文件,然后使用如webBackups等工具进行压缩并通过网络传输,压缩使用gzip压缩算法:

图 3.6 – 创建一个目录的 TAR 压缩包
rar是一个专有的文件归档工具,用于在 Linux 系统上压缩和解压文件。该工具由尤金·罗斯哈尔(Eugene Roshal)开发,用于创建扩展名为.rar的压缩文件。它是一种流行的文件压缩格式,允许用户将大文件压缩成较小的压缩包,便于存储、传输和分发。rar支持密码保护、错误恢复和归档分割等功能,使其成为管理大批量文件的多功能和高效工具。
系统管理员可以使用rar来压缩大文件或文件集,减少文件大小并释放磁盘空间。这有助于提高系统性能并减少备份和文件传输所需的存储空间。此外,RAR 压缩包可以设置密码,提供额外的安全性保护敏感文件。系统管理员还可以使用rar将大文件分割成多个较小的文件,这在通过互联网传输文件或将其存储在 USB 驱动器等可移动介质上时非常有用。
场景 1
系统管理员需要通过互联网将一个大型备份文件传输到另一个服务器。由于文件太大,无法以当前格式传输,因此管理员决定使用rar进行压缩。管理员使用rar a backup.rar backup_folder命令来创建backup文件夹的压缩包:

图 3.7 – 创建备份文件夹的压缩包
结果生成的 RAR 压缩包比原始备份文件夹小,且可以轻松通过互联网传输。
zip 和 unzip
zip和unzip是系统管理员广泛使用的文件压缩和归档命令。zip用于压缩和归档文件,而unzip用于从 ZIP 压缩包中提取和解压文件。zip和unzip是重要的命令,因为它们使系统管理员能够高效管理大文件和目录,减少存储空间的使用,并加快文件传输。这些命令易于使用,支持各种压缩和归档格式,是系统管理任务中多功能的工具。
zip 用于将文件压缩并归档为一个单独的文件,以便于备份、存储和传输。压缩后的 .zip 文件占用更少的存储空间,从而减少了对额外存储设备的需求。系统管理员可以使用 zip 命令来压缩和归档文件、目录,甚至整个文件系统。接下来我们来看一些基于场景的示例。
一位系统管理员需要在 Linux 机器上创建 Web 服务器目录的备份。该目录包含多个文件和子目录,管理员决定使用 zip 将目录压缩并归档为一个单独的文件,便于备份和存储。管理员使用 zip -r backup.zip web_server 命令创建一个包含所有子目录和文件的 Web 服务器目录的 ZIP 压缩包。生成的 ZIP 压缩包可以存储在便携式硬盘上,或通过网络传输到另一台服务器上以进行保管:

图 3.8 – 创建 Web 服务器目录的备份
在这个示例中,管理员使用 -r 标志将 web_server 目录压缩为名为 backup.zip 的 ZIP 压缩包,并递归地包括所有子目录和文件。稍后,当管理员需要恢复该目录时,他们使用带有 -d 标志的 unzip 命令,将压缩包提取到一个名为 restored_web_server 的新目录中。
unzip 也可以用于列出 ZIP 压缩包的内容,测试压缩包的完整性,以及从压缩包中提取特定文件。它还用于从 ZIP 压缩包中提取和解压文件,允许系统管理员检索并使用压缩包中包含的文件。下面是使用 unzip 的示例:

图 3.9 – 使用 unzip 的 “-d” 标志将压缩包提取到一个新目录
unzip backup.zip -d restored_web_server 命令用于将名为 backup.zip 的 ZIP 压缩包内容提取到名为 restored_web_server 的目录中。
要确定目录的大小,可以使用 du -H restored_web_server/ 命令,它计算文件和目录的磁盘使用情况,如下图所示:

图 3.10 – restored_web_server 命令
-d 标志指定提取文件的目标目录。在此案例中,目标目录是 restored_web_server。ZIP 压缩包的内容将被提取到该目录中,并保留原始压缩包的目录结构。在下一个主题中,我们将探索如何使用 tar 命令通过 bzip2 和 bunzip 格式来压缩文件。我们还将涉及系统管理员在日常任务中常用的其他归档命令。
bunzip2, bzip2 和更多
bzip2 和 bunzip2 是两个在基于 Unix 的系统中用于文件压缩和解压缩的命令。bzip2 命令用于压缩文件,而 bunzip2 命令用于解压使用 bzip2 压缩的文件。这些命令通常由系统管理员使用,以节省磁盘空间并在系统之间传输大型文件。
bzip2 是一个强大的压缩工具,它使用 Burrows-Wheeler 块排序文本压缩算法,随后进行 Huffman 编码。这种算法使得 bzip2 在保持相对较快解压时间的同时,能够实现较高的压缩比。这使得 bzip2 非常适合压缩大型文件,如备份文件、数据库和软件分发包。当一个文件使用 bzip2 压缩时,通常会被赋予 .bz2 扩展名。以下是几个例子来演示这一过程。
场景 1
系统管理员希望压缩一个大型日志文件并节省服务器上的磁盘空间。管理员决定使用 bzip2 压缩该文件。管理员导航到日志文件所在的目录,并输入命令 bzip2 -k -v syslog.log 来使用 bzip2 压缩日志文件:

图 3.11 – 使用 bzip2 压缩大型日志文件
接着,我们验证压缩后的 syslog.log 文件:

图 3.12 – 验证压缩后的日志文件
-k 选项保留原始文件并创建一个压缩版本,而 -v 选项则显示压缩过程的进度。压缩后的文件比原始文件小得多,可以安全删除以释放磁盘空间。
场景 2
系统管理员需要备份一个包含多个文件和子目录的大目录。管理员决定使用 bzip2 将该目录及其内容压缩成一个单独的文件。管理员输入命令 tar -cvf - directory_to_backup | bzip2 -9 -c > backup.tar.bz2 来创建该目录的 TAR 存档文件,使用最高压缩级别(-9)通过 bzip2 压缩,并将输出重定向到一个备份文件中:

图 3.13 – 压缩一个包含子目录的目录
让我们深入了解这些链式命令。
tar -cvf - /home/instructor/Desktop/administrator命令用于创建/home/instructor/Desktop/administrator目录的 TAR 归档文件;这是我们在本章中介绍的第一个命令。-c选项指定正在创建一个新的归档,-v选项启用详细模式以显示归档过程的进度,-f选项指定输出文件。-f选项后的短横线表示输出应发送到标准输出(stdout),而不是磁盘上的文件。
|(管道)符号用于将tar命令的输出重定向到bzip2命令的输入;然后,我们使用bzip2 -9 -c命令压缩tar命令创建的 TAR 归档文件,采用bzip2算法。-9选项指定最高压缩级别,而-c选项将输出发送到标准输出。最后,> backup.tar.bz2将压缩后的输出重定向到名为backup.tar.bz2的文件。
下面是对bzip2常见压缩级别的简要解释:
-
-1(最快):此级别提供最快的压缩速度,但生成较大的压缩文件。适用于速度比文件大小缩减更为关键的情况。 -
-9(最大压缩——我们在图 3.13中选择的压缩级别):此级别提供最高的压缩率,生成较小的压缩文件。然而,它比较低级别的压缩速度慢。当节省磁盘空间是首要任务且你不介意等待压缩过程完成时,这个级别很有用。 -
-2到-8(中间级别):这些级别提供压缩速度和文件大小之间的折中。随着从-2到-8的增加,压缩效果变得更好(文件更小),但相比于较低的级别,压缩速度更慢。根据你对速度和文件大小缩减的具体需求选择一个中间级别。
生成的备份文件比原始目录小得多,且可以轻松传输或存储以备安全保存。
bunzip2命令用于解压已使用bzip2压缩的文件。当使用bunzip2解压压缩文件时,原始文件将以与压缩文件相同的名称和目录路径恢复,但没有.bz2扩展名。bunzip2命令还可以解压使用gzip命令压缩的文件。
系统管理员可以通过多种方式使用bzip2和bunzip2。一个常见的使用场景是压缩和解压 web 服务器上的大型日志文件。通过使用bzip2压缩日志文件,系统管理员可以节省磁盘空间,并将日志传输到另一个系统进行分析。另一个使用场景是压缩和传输数据库备份文件。通过使用bzip2压缩备份文件,系统管理员可以减少传输时间并节省网络带宽。让我们通过一个例子进一步解释这一点。
场景 1
系统管理员需要提取并解压一个已经被分割成多个部分的大压缩文件。该压缩文件具有 .bz2 扩展名,并且是使用 bzip2 命令创建的。为了提取并解压该文件,管理员可以使用 bunzip2 命令,后跟文件名。如果压缩文件已被分割成多个部分,管理员可以使用 cat 命令将文件合并,然后将输出通过管道传递给 bunzip2 命令。以下是管理员可以使用的示例命令:

图 3.14 – 使用 bunzip2 解压缩压缩文件
cat syslog.log.bz2 命令读取 syslog.log.bz2 压缩文件的内容,并将其作为输入传递给 bunzip2 -c 命令。-c 选项指定命令的输出应发送到标准输出(即终端),而不是文件。
bunzip2 -c 命令使用 bzip2 压缩算法解压输入文件,并将解压后的数据发送到标准输出(stdout)。最后,输出通过 > 运算符重定向到名为 decompressed_file 的文件中。
让我们探索其他可以使用的归档命令,例如 7zip 和 xz。
7-Zip 是一个流行的开源文件归档工具,能够处理各种压缩格式,如 ZIP、GZIP、TAR 以及其自有的 7z 格式。它被系统管理员广泛用于压缩和解压文件及目录。该工具具有高压缩比,能够显著减少文件大小。7-Zip 使用的压缩格式也以安全性著称,适合用于存档机密数据。它还可以创建自解压归档文件,允许用户在无需安装任何附加软件的情况下提取压缩文件。接下来,我们将通过一个场景进行说明。
场景 1
系统管理员需要创建一个包含机密信息的大目录的压缩归档。管理员使用 7z a -t7z -p -mhe=on archive.7z directory_to_compress 命令创建一个密码保护且加密的 7z 归档文件。-mhe=on 选项启用文件名加密,以确保数据的机密性:

图 3.15 – 7-Zip 提示用户输入密码
-p 选项用于指定压缩归档文件的密码。由于在 -p 选项后没有提供密码,7z 将提示用户输入密码。生成的 7z 归档文件可以轻松地转移并存储到另一个服务器或外部硬盘上,只有拥有密码的授权人员才能提取数据。
XZ 是一个用于数据压缩和解压缩的命令行工具。它基于 Lempel-Ziv-Markov 链算法(LZMA),该算法以高压缩比和低内存占用著称。XZ 用于创建大型文件和目录的压缩归档,尤其在 Linux 系统中应用广泛。它也用于在安装过程中压缩 Linux 内核。XZ 能显著减少文件大小,同时保持原始文件的完整性。此外,XZ 还可以用于动态压缩和解压文件,这在某些场景中非常有用。
场景 2
系统管理员需要压缩并归档一个由 web 服务器生成的大型日志文件。管理员使用 xz -z -k -9 logfile.log 命令以最大压缩级别(-9)压缩该文件并保留原始文件(-k)。压缩后的文件明显比原始文件小,从而更便于存储和传输。管理员可以使用 xz -d logfile.log.xz 命令解压该文件,以便进行分析或进一步处理。
以下命令用于压缩日志文件:

图 3.16 – 压缩 syslog 文件
在这里,xz 命令用于将 syslog.log 文件以最大压缩级别 9(-9)进行压缩,并保留原始文件(-k)。压缩后的文件将具有 .xz 扩展名。
以下命令用于解压缩压缩的日志文件:

图 3.17 – 解压缩 syslog 文件
要解压缩 syslog 文件,我们使用相同的 xz 命令解压缩 syslog.log.xz 压缩文件。解压后的文件将恢复为原始名称 logfile.log。
总之,Linux 系统拥有多种强大的工具用于文件的压缩与解压缩,包括 bunzip2、bzip2、7z 和 xz。这些工具特别适用于归档大型文件和目录,以及在系统之间或通过网络传输文件。通过一些命令提供的密码保护和数据加密功能,管理员可以确保文件的安全性和机密性。通过使用这些命令,系统管理员可以更高效地管理文件和存储,优化计算资源。例如,7z 可以压缩大型数据库,bzip2 可以归档文件,而 xz 可以压缩日志文件。无论管理员需要压缩、传输还是解压缩文件,这些工具都提供了可靠且高效的解决方案。
总结
本章介绍了文件压缩与归档命令,这些命令对于高效的文件管理和通过网络传输文件非常重要。它还介绍了几种强大的工具,包括gunzip、gzip、tar、rar、unrar、zip、unzip、bunzip2、bzip2、7z和xz,这些工具使得系统管理员能够高效地压缩和解压文件、归档大型文件和目录,并通过网络或系统之间传输文件。这些命令提供了各种压缩级别和加密选项,以确保数据的安全性和机密性。它们对于管理大型数据库、备份重要文件以及通过互联网传输文件特别有用。通过使用这些命令,系统管理员可以高效地管理文件和存储,最大化计算资源的利用。
总体来说,本章提供了一个全面的指南,讲解了 Linux 中文件压缩与归档命令,这些命令对有效的文件管理和存储优化至关重要。通过掌握这些命令,系统管理员能够高效地管理文件和存储,确保数据的安全性和机密性。
随着我们进入第二部分,下一章将专注于格式化和磁盘空间命令,这些命令对于系统管理员管理磁盘空间和文件系统至关重要。通过本章,读者将学习如mkfs、fdisk、du、df等命令,了解如何格式化磁盘、分区硬盘、检查磁盘使用情况并管理文件系统。通过学习这些命令,系统管理员可以有效地管理磁盘空间并优化存储性能。
第二部分:常用命令 – 第一部分
在这一部分,我们探索系统管理员在命令行界面(CLI)中常用的基本命令。我们将讨论它们的实用性和执行方式,并提供实践经验以确保正确理解。
本节包含以下章节:
-
第四章,格式化与磁盘空间命令
-
第五章,Linux 权限命令
-
第六章,文件系统挂载与操作命令
第四章:格式化和磁盘空间命令
在我们全面系列的系统管理员常用命令中,命令行界面(CLI)是完成许多任务的必备工具。CLI 提供了一种简洁高效的方式来执行各种任务,从管理文件和目录到监控系统性能和排查问题。在这一部分中,我们将深入探讨常用命令,了解它们的实用性、执行方法以及有效的最佳实践。通过掌握这些命令,系统管理员能够更加高效、有效地工作,充分利用计算资源。
作为一名系统管理员,管理存储和文件系统是确保系统顺利运行的关键部分。能够格式化、分区和管理磁盘空间对于管理文件、备份重要数据以及维护系统稳定性至关重要。在本章节中,我们将探讨用于格式化和磁盘空间管理的各种命令,包括fdisk、lsblk、df、du等。
我们将首先讨论磁盘格式化和分区的历史与演变,从早期的磁带存储到现代的mkfs、mke2fs、fdformat等工具。在本章结束时,您将对格式化和磁盘空间命令有一个全面的了解,能够有效地管理存储和文件系统。需要注意的是,格式化磁盘会删除磁盘上的所有数据,因此在使用这些命令时应小心谨慎。
本章我们将涵盖以下主要内容:
-
Linux 中磁盘格式化和分区的历史与演变
-
创建分区的步骤
-
fdisk、lsblk、df 和 du
-
显示(dpkg 和 rpm)软件包空间
-
mkfs、mke2fs 和 fdformat 等工具
Linux 中磁盘格式化和分区的历史与演变
Unix/Linux 中磁盘格式化和分区的历史可以追溯到计算机早期,那时磁盘存储资源稀缺。磁盘分区在将磁盘空间划分为更小、可管理的部分时至关重要。这使得系统管理员可以更高效地分配磁盘空间,并减少在磁盘故障时数据丢失的风险。在 Unix 早期,磁盘分区是通过fdisk命令完成的,用户可以使用该命令创建、删除和修改磁盘分区。随着 Linux 的引入,分区工具更新为使用更先进的GUID 分区表(GPT)格式,支持更大的磁盘和更多的分区。
随着时间的推移,Unix/Linux 中的磁盘格式化和分区变得越来越复杂,新增了许多命令和工具,以改进这一过程。例如,mke2fs 命令用于创建 ext2 或 ext3 文件系统,它是在 Linux 1.2 版本中引入的。该命令创建了一种更高效的文件系统,减少了数据丢失的风险,并使磁盘管理更加可控。mke2fs 命令的引入是 Unix/Linux 中磁盘格式化和分区发展史上的一个重要里程碑,因为它使管理员能够创建更可靠的文件系统并更高效地管理磁盘空间。云计算和虚拟化的出现也对 Unix/Linux 中的磁盘格式化和分区产生了重大影响。云计算使虚拟磁盘的使用成为可能,虚拟磁盘可以像物理磁盘一样使用相同的工具进行分区和格式化。在虚拟化环境中,管理员可以轻松地创建、修改和调整虚拟磁盘的大小,使存储空间的管理变得更加简单。此外,云存储提供商还开发了自己的磁盘格式化和分区工具,如 Amazon 弹性块存储(EBS),它允许用户为实例创建并附加虚拟磁盘。这些工具使管理员在云中管理磁盘空间变得更加容易,并确保数据的安全存储。
有三种类型的分区:
-
主分区:主分区是可以用来启动操作系统的基本分区。在硬盘上,你可以创建最多四个主分区。如果想创建更多的分区,可以创建一个扩展分区,它是一种特殊的分区,可以包含多个逻辑分区。
-
逻辑分区:逻辑分区是在扩展分区内创建的分区。你可以在扩展分区内创建多个逻辑分区,这在你想创建多个分区但已创建四个主分区时会非常有用。
-
扩展分区:扩展分区是一种特殊的分区,用于创建多个逻辑分区。只有在硬盘上没有超过四个主分区的情况下,才能创建扩展分区。创建了扩展分区后,可以在其中创建多个逻辑分区。
这些分区类型用于组织和管理硬盘上的数据。通过创建多个分区,可以将不同类型的数据分开,并更有效地管理它们。例如,可以为操作系统创建一个单独的分区,为用户数据创建一个分区,为备份文件创建一个分区。这可以使数据的管理更加方便,并在发生故障或数据丢失时进行保护。不同类型的分区提供了在硬盘上根据需要和硬盘的限制组织数据的灵活性。
创建分区的步骤
分区是将一个物理硬盘分割成多个逻辑存储单元的过程。在 Linux 中,创建分区的过程包括定义新分区的大小和位置,然后使用ext4、XFS或btrfs等文件系统对其进行格式化。创建分区对于有效管理磁盘空间至关重要。通过分区,系统管理员可以在硬盘上组织和分配空间,用于操作系统、应用程序文件、用户数据和交换空间等多个功能。
在 Linux 中创建分区的过程包括几个步骤。第一步是使用fdisk命令或其他磁盘管理工具(如lsblk、df和du)识别需要分区的物理硬盘。接下来,系统管理员必须决定新分区的大小和位置,并使用fdisk命令创建它。然后,必须使用mkfs命令将新分区格式化为文件系统。最后,系统管理员必须挂载新分区,以便操作系统及其应用程序能够访问它。
分区对于几个方面非常重要。首先,它通过将数据组织成逻辑单元,帮助系统管理员有效管理磁盘空间。通过分区,备份和恢复数据变得更加容易,也更方便为特定的应用程序或功能分配空间。其次,分区可以通过减少磁盘碎片和优化访问时间来提高系统性能。此外,分区还可以通过将敏感数据隔离在独立的分区中,保护其免受未经授权的访问,从而提高安全性。请记住,分区是系统管理员管理磁盘空间、优化系统性能和增强安全性的关键工具。
演示将会很简单,因为我们只需要一块连接到 Linux 机器的驱动器,然后通过启动终端就可以开始分区。我们将使用的命令是lsblk和fdisk。lsblk命令会列出可用的设备,以便我们选择正确的设备进行格式化,而fdisk命令则会有效地格式化所选的设备。让我们开始演示:
- 要验证可用设备,请执行
lsblk命令:

图 4.1 – 验证磁盘空间
如我们所见,我们已经列出了可用设备及其各自的磁盘空间,但我们主要关注的是连接在/dev/sdb上的驱动器。请注意,/dev表示 Linux 中的设备目录,其中硬件设备作为文件表示。在这种情况下,/dev/sdb是系统上的第二个 SCSI 磁盘驱动器。注意,它已经有一个分区(sdb1)。我们将删除该分区,重新验证一次,然后创建我们自己的分区。让我们继续进行下一步。
- 接下来,执行
fdisk命令来打开/dev/sdb驱动器的工具。请确保你有sudo权限来运行此命令。打开工具后,你可以创建新分区,但首先,让我们删除之前的分区:

图 4.2 – 查看/dev/sdb驱动器的 fdisk 工具
在这里,我们使用了p命令,它表示打印,用来显示我们之前通过lsblk命令识别的现有分区的信息。现在,我们需要删除该分区,以便根据我们的需求创建一个新分区。
- 要删除
sdb1分区,请使用d命令(表示删除)来移除sdb1分区:

图 4.3 – 删除并保存所做的更改
- 之后,我们可以使用
lsblk命令检查分区是否真的被删除。如我们所见,已删除的分区(sdb1)不再列出,证明删除成功:

图 4.4 – 验证分区已删除
一旦确认这一点,我们就可以继续创建我们自己的分区。
- 现在,调用
fdisk工具来查看/dev/sdb驱动器的分区,并输入p以打印当前的分区表。这将帮助你了解磁盘当前的分区情况。接下来,输入n以创建新分区。fdisk工具中的n命令用于在所选磁盘上创建新分区。输入命令后,我们会被提示选择我们希望创建的分区类型。在这种情况下,我们将看到两种分区类型——主分区和扩展分区:

图 4.5 – 创建新分区
- 接下来,我们选择了
p作为主分区类型。然后,我们被提示选择分区数量,我们按Enter键保留默认值。对于第一个扇区,我们也按了Enter键。最后一个扇区也是如此。最后,我们通过输入yes确认要删除签名,并使用w命令保存我们所做的所有更改:

图 4.6 – 选择主分区并保存更改
- 通过调用
fdisk -l /dev/sdb和lsblk来验证其创建:

图 4.7 – 验证新分区(sdb1)
恭喜!你已经成功创建了一个分区。
fdisk、lsblk、df 和 du
在 Linux 系统中,用于管理文件系统的工具包括fdisk、lsblk、df和du。这些工具各自执行磁盘管理中的特定功能,正确使用它们对确保系统高效运行至关重要。
我们之前介绍了 fdisk,一个用于分区的命令行工具。它允许我们创建和修改分区表,帮助管理员根据需要组织存储空间。分区对于高效利用存储空间、提高系统性能以及简化文件系统管理至关重要。fdisk 可以创建不同类型的分区,包括主分区、逻辑分区和扩展分区。此外,它还可以用于更改分区大小、删除分区和修改分区类型。如果没有 fdisk,管理和组织文件系统将变得复杂、繁琐且容易出错。我们可以通过输入 fdisk -l 来列出分区:

图 4.8 – 使用 fdisk 列出分区
lsblk 是另一个命令行工具,用于 Linux 系统中列出所有可用的块设备,包括硬盘、USB 设备和光盘驱动器。这个工具有助于识别系统上附加的存储设备及其详细信息。lsblk 的输出提供了关于块设备的关键信息,如设备名称、大小、文件系统类型和挂载点。以下是一个例子:

图 4.9 – 块设备的输出
这些信息对于决定如何分配存储空间和高效组织文件系统至关重要。lsblk 在磁盘管理中是必不可少的,它帮助系统管理员识别附加到系统上的存储设备,排除设备连接问题,并就分区和磁盘组织做出明智决策。
df (磁盘空闲) 工具是一个命令行工具,用于显示 Linux 系统中文件系统使用的磁盘空间和可用的磁盘空间。这个工具在监控文件系统使用情况、识别存储空间消耗模式以及做出如何有效分配存储空间的决策中非常重要。我们来尝试显示特定文件系统(如根文件系统)的磁盘空间使用情况:

图 4.10 – 使用 df 显示磁盘使用情况
使用 df,管理员可以识别出磁盘空间不足的文件系统,这可能会导致系统性能问题或数据丢失:

图 4.11 – 监控磁盘使用情况
在这个示例中,管理员正在监控存储网站文件的文件系统的磁盘空间使用情况,该文件系统挂载在 /var/www/html。使用 df 命令并加上 -h 选项,可以以人类可读的格式显示输出,使磁盘空间的使用情况更易理解。输出显示文件系统的总大小、已用空间、可用空间、已用空间的百分比以及挂载点。管理员可以利用这些信息识别出占用最多空间的目录,并进行优化以提升性能。此外,管理员还可以根据这些信息为未来的磁盘空间需求进行规划。df 工具提供了关于文件系统使用情况的详细报告,包括文件系统类型、总大小、已用空间、可用空间和已用磁盘空间的百分比。有了这些信息,管理员可以优化磁盘使用、提高性能并避免系统崩溃。
du 工具是另一个在 Linux 系统中用于确定特定目录和文件所占空间的基本命令行工具。通过 du,管理员可以识别出占用过多空间的文件或目录,并决定是否删除、归档或将它们移至另一个文件系统。du 工具还会显示每个子目录所占的空间,使管理员能够快速定位占用空间的文件。du 工具在磁盘管理中的重要性不言而喻,它帮助系统管理员优化磁盘使用、识别占空间的文件,并排除空间消耗问题。
检查目录的磁盘空间使用情况
在这个示例中,我们将使用 du 命令检查目录的磁盘空间使用情况。
步骤如下:
-
导航到您想要检查磁盘空间使用情况的目录。
-
输入以下命令:

图 4.12 – 使用 du 检查磁盘使用情况
我们使用了 du -sh 命令来检查目录的磁盘空间使用情况。输出显示该目录使用了 13 GB 的磁盘空间。
查找目录中的大文件
在这个示例中,我们将使用 du 命令查找目录中的大文件。
步骤如下:
-
导航到您想要查找大文件的目录。
-
输入以下命令:

图 4.13 – 使用 du 查找大文件
使用 du -a | sort -rn | head –n 10 命令识别目录中 10 个最大文件。生成的输出提供了每个文件的字节大小及其相应的文件路径。让我们将此命令应用于另一个文件夹并观察结果:

图 4.14 – 使用 du 查看文件大小
fdisk、lsblk、df和du等工具对于在 Linux 系统中管理和组织磁盘空间至关重要。fdisk用于磁盘分区,lsblk用于识别连接到系统的存储设备,df用于监控文件系统的使用情况,而du用于确定特定目录和文件所占用的空间。正确使用这些工具对于优化磁盘使用、提高系统性能和避免数据丢失至关重要。
显示(dpkg 和 rpm)软件包空间
包管理系统如dpkg和rpm用于在 Linux 和 Unix 操作系统中安装、删除和管理软件包。dpkg工具用于基于 Debian 的系统,如 Ubuntu,而rpm工具则用于基于 Red Hat 的系统,如 CentOS。这些工具不仅提供了一种便捷的方式来管理软件包,还提供了关于已安装软件包的磁盘空间使用情况的有价值信息。dpkg和rpm工具的一个重要用途是显示软件包空间,这指的是已安装软件包所占用的磁盘空间。通过使用这些工具,管理员可以识别出占用最多磁盘空间的包,并决定是否删除或保留它们。这在磁盘空间有限的系统中尤其有用,因为优化磁盘空间的使用对避免系统崩溃、性能问题或数据丢失至关重要。
此外,dpkg和rpm工具还提供了关于软件包依赖关系的信息,这些是安装的软件包正常运行所需的其他软件包。这些信息有助于识别出可以安全删除的包,而不会影响系统的稳定性或功能性。通过删除不必要的包,管理员可以释放磁盘空间,减少系统复杂性,并提高系统性能。dpkg和rpm工具还提供了一种简便的方式来自动解决依赖关系,升级或安装软件包。通过这些工具,管理员可以轻松安装安全补丁、更新和新的软件包,而无需担心依赖关系问题。这减少了管理软件包所需的时间和精力,并确保系统保持最新的软件版本。我们目前使用的是 CentOS 8,这意味着rpm(Red Hat 软件包管理器)将是我们的第一个示例。
安装软件包
以下示例演示了如何在 CentOS 8 上使用rpm安装软件包:

图 4.15 – 使用 rpm 安装软件包
此命令使用 RPM 安装指定的软件包。它会在当前目录中搜索package文件,或者你可以指定package文件的路径。这个命令对于在 Linux 系统上安装新软件非常有用,无论是单个软件包还是一组软件包。
查询软件包的详细信息
rpm 命令可用于查询系统中已安装软件包的详细信息。例如,要查询 ftp 软件包的详细信息,可以使用以下命令:

图 4.16 – 查询已安装软件包的详细信息
dpkg 和 rpm 工具对于管理软件包和优化 Linux 和 Unix 系统中的磁盘空间使用至关重要。通过提供有关软件包空间、依赖关系和升级选项的有价值信息,这些工具使管理员能够做出明智的决策,确保系统的稳定性、安全性和性能。
mkfs、mke2fs、fdformat 等
磁盘格式化是准备存储设备(如硬盘、SSD 或 USB 闪存驱动器)以进行数据存储的过程。格式化会在存储设备上创建文件系统,操作系统可以通过该文件系统来组织和管理设备上的文件。在 Linux 中,可以使用多种磁盘格式化工具命令来格式化存储设备。这些工具包括 mkfs、mke2fs、fdformat 等。
mkfs 是用于在存储设备上创建文件系统的命令。此命令可用于创建多种文件系统,包括 ext2、ext3、ext4、XFS、btrfs 等。mkfs 命令在为 Linux 系统准备存储设备时非常重要。例如,当一个新的硬盘添加到 Linux 服务器时,必须先进行格式化才能用于数据存储。我们来看一下在 CentOS 8 上使用此工具的简单方法:

图 4.17 – 使用 mkfs.ext4 格式化分区
这将使用 ext4 文件系统格式化 /dev/sdb1 分区。新格式化的分区可以挂载并用于数据存储。
mke2fs 是 mkfs 命令的一个变体,专门用于创建 ext2、ext3 和 ext4 文件系统。mke2fs 命令在创建和管理 Linux 文件系统中非常重要。使用此命令,管理员可以指定文件系统的大小、块大小以及其他参数,以优化文件系统以适应特定的使用场景。例如,使用 mke2fs 命令创建的文件系统可以优化以应对高性能工作负载,或用于处理大文件,如以下示例所示:

图 4.18 – 创建 ext3 文件系统
在这里,命令会在 /dev/sdb1 分区上创建一个 ext3 文件系统。-t ext3 选项指定文件系统类型为 ext3。
fdformat 命令主要用于对软盘进行低级格式化,这是较旧的存储介质。它会将新的磁盘几何结构和扇区布局写入软盘,准备其使用。然而,该命令并不适用于格式化现代存储设备,如 U 盘或 USB 闪存驱动器。
在 Linux 中格式化 U 盘或 USB 闪存驱动器时,通常使用mkfs(创建文件系统)命令,如使用mkfs.fat创建FAT文件系统,或使用mkfs.ext4创建ext4文件系统,正如前面的示例所示。这些命令专门设计用于格式化不同类型的存储设备,包括 U 盘、USB 闪存驱动器和硬盘。
mkswap命令用于在 Linux 系统上创建交换区域。交换区域是硬盘上专用的空间,当系统的物理内存不足时,可以将其作为虚拟内存使用。mkswap命令将磁盘分区或文件初始化为交换区域,并为其分配唯一的标识符。
让我们通过全面的示例,演示这些命令的实际应用:
- 检查可用的磁盘分区:

图 4.19 – 查看可用的磁盘分区
- 确定所需的交换分区,如
/dev/sdb1,然后执行sudo mkswap /dev/sdb1命令。该命令将分区格式化为swap,输出如下:

图 4.20 – 使用 mkswap 将分区格式化为 swap
gdisk命令是fdisk命令的一种变体,用于 Linux 系统上的硬盘分区。gdisk主要设计用于 GPT,这是一种较新的分区方案,已经取代了较旧的分区方式。gdisk是一个强大的工具,允许你在 GPT 磁盘上创建、修改和删除分区。
-
在此场景中,系统管理员使用
gdisk命令在/dev/sdb磁盘上创建一个新分区。管理员输入gdisk /dev/sdb命令以启动指定磁盘的gdisk工具。 -
进入
gdisk工具后,管理员使用n命令创建一个新分区。工具会提示输入分区号、起始扇区和结束扇区。管理员可以选择默认值,也可以根据需求指定自定义值:

图 4.21 – 使用 gdisk 创建新分区
- 在此示例中,管理员通过输入十六进制代码
8300将分区类型设置为Linux swap。确认更改后,管理员使用w命令将更改写入磁盘并退出gdisk工具:

图 4.22 – 分区已创建
parted命令是一个分区编辑器,允许你在硬盘上创建、删除、调整大小和移动分区。Parted 支持 MBR 和 GPT 两种分区方案,并能够处理多种文件系统类型。它是管理磁盘分区的强大工具,通常用于服务器环境中。
让我们探索一个使用 parted 命令的实际场景:
-
在此场景中,系统管理员使用
parted命令在/dev/sdb磁盘上创建一个新分区。管理员输入parted /dev/sdb命令来启动指定磁盘的 parted 工具。 -
进入 parted 工具后,管理员使用
mklabel gpt命令在磁盘上创建一个新的 GPT 分区表。这可以确保与现代系统和更大磁盘大小的兼容性。 -
接下来,管理员使用
mkpart primary ext4 0% 100%命令创建一个新的主分区,该分区覆盖整个磁盘。该分区采用ext4文件系统格式化。 -
创建分区后,管理员可以使用
print命令验证分区布局和详细信息。这有助于确保分区正确创建。 -
最后,管理员使用
quit命令退出 parted 工具:

图 4.23 – 使用 parted 创建分区表
通过在此场景中使用 parted 命令,系统管理员可以轻松创建和管理指定磁盘上的分区,从而实现有效的磁盘管理和利用。
dd 命令是一个低级工具,用于在文件、磁盘和分区之间复制和转换数据。dd 命令通常用于创建可启动的 USB 驱动器、备份和恢复磁盘映像以及克隆磁盘。它还可以用于将零写入硬盘,这对于安全擦除敏感数据非常有用。
让我们探索一个 dd 命令的实际示例场景:
-
在此场景中,系统管理员使用
dd命令将源文件的内容复制到由/dev/sdb表示的 USB 设备上。 -
管理员首先执行
dd命令。if选项用于指定输入文件,后跟源文件的路径(在此示例中为/home/instructor/backup.tar.gz):

图 4.24 – 使用 dd 命令在 USB 设备上复制
-
接下来,
of选项用于指定输出文件,即由/dev/sdb表示的 USB 设备。这意味着源文件的内容将被写入到 USB 设备中。 -
bs选项用于指定数据传输的块大小。在此示例中,bs=4M表示块大小为 4 兆字节。 -
通过执行此命令,系统管理员可以有效地将源文件的内容复制到 USB 设备上。这对于创建可启动 USB 驱动器、传输大型文件或创建磁盘映像等任务非常有用。
-
在使用
dd命令处理块设备如/dev/sdb时,必须小心,因为目标设备上的所有数据都将被覆盖。作为管理员,你应该仔细检查并确保选择了正确的设备,以避免意外的数据丢失。
总之,磁盘格式化工具命令是管理 Linux 系统中存储设备的重要组成部分。这些命令帮助管理员准备存储设备,优化文件系统以适应特定的使用场景,并确保设备的可靠性和性能。理解这些命令的目的和使用方式对于任何从事存储设备管理的 Linux 管理员都非常重要。
总结
本章探讨了创建分区的步骤,这是磁盘管理的基础过程。我们详细介绍了如何使用fdisk、lsblk、df和du等工具来创建、修改和分析存储设备上的分区。这些工具在分区管理中起着至关重要的作用,帮助系统管理员高效分配磁盘空间、监控磁盘使用情况,并做出明智的决策,以优化存储利用率。此外,本章还深入讨论了如何使用dpkg和rpm等命令来显示包的空间信息。这些命令帮助系统管理员获取已安装包的信息,包括其大小和磁盘空间占用情况。通过使用dpkg和rpm,管理员可以跟踪包的安装情况,识别占用大量空间的包,并管理包的依赖关系,以确保磁盘空间的高效利用。
此外,本章介绍了mkfs、mke2fs和fdformat等磁盘格式化工具的使用。这些命令为管理员提供了格式化磁盘和分区的能力,支持多种文件系统,便于数据的组织和兼容性。正确的磁盘格式化对优化性能和存储利用率至关重要。系统管理员可以使用这些工具准备磁盘用于特定用途,创建用于数据存储的文件系统,或格式化可移动存储介质。
总结来说,本章是关于 Linux 中有效文件管理和存储优化的全面指南。通过创建分区、使用fdisk、lsblk、df和du等工具、展示dpkg和rpm的包空间,并采用mkfs、mke2fs和fdformat等磁盘格式化命令,系统管理员可以高效地管理文件和存储资源。这能帮助他们提升存储利用率,确保数据完整性,并保持系统环境的有序和优化。
在下一章,我们将深入探讨并讨论一些重要的命令,如chmod、chown、chgrp、umask和sudo。这些命令在授予和管理文件权限、修改所有权和组设置、设置默认文件权限以及以管理员权限执行命令方面起着至关重要的作用。
第五章:Linux 权限命令
Linux 权限命令是 Linux 系统管理的基本组成部分,提供了一个强大的机制来控制对文件和目录的访问。这些命令,包括chmod、chown等,在保持安全性、保护敏感数据和管理用户权限方面发挥着重要作用。它们允许 Linux 系统管理员定义谁可以读取、写入和执行文件,并为不同的用户和组指定访问权限。Linux 权限命令的重要性在于它们能够执行最小权限原则,确保用户和进程只有执行其预定任务所需的权限。通过分配适当的权限,系统管理员可以保护关键文件,防止未经授权的访问,减少数据泄露和未经授权修改的风险。此外,这些命令使管理员能够根据用户角色分配权限,在系统中保持一个明确的安全模型。
Linux 权限命令的目的是双重的:安全性和组织性。从安全角度看,它们允许管理员限制对敏感文件、目录和系统资源的访问。通过授予或撤销权限,管理员可以限制关键数据的暴露,防止恶意活动。在组织方面,这些命令有助于文件和目录的管理,确保它们被适当地分类、保护,并且能被目标用户访问。由于其多功能性和在维护系统安全性以及管理用户访问方面的有效性,Linux 系统管理员广泛使用这些命令。它们提供了对权限的精细控制,允许管理员为所有者、用户组和其他用户设置不同的访问级别。此外,这些命令还可以递归地应用,便于跨目录和子目录高效地管理权限。通过使用符号模式和绝对模式,管理员可以根据特定要求轻松修改权限。
Linux 权限命令对于管理文件和目录的访问权限至关重要。系统管理员可以使用这些命令执行安全措施,控制用户访问,并保护敏感数据。在本章结束时,你将全面了解 Linux 权限命令,使你能够有效地管理文件和目录权限。
在本章中,我们将涵盖以下主要主题:
-
为什么使用权限命令?
-
权限类型
-
chmod
-
chown
-
在命令中使用绝对路径
-
chgrp
-
umask
-
sudo
为什么使用权限命令?
通过使用权限命令,管理员可以实施最小权限原则,仅授予用户执行任务所需的必要权限。这种做法减少了未经授权访问或意外修改关键文件的风险,最大限度地降低了数据泄露和系统危害的可能性。正确的权限设置可以帮助组织控制敏感信息,防止未经授权的披露或篡改。此外,权限命令使管理员能够实施与行业最佳实践和合规规定一致的安全策略。例如,通过限制对配置文件或系统目录的访问,管理员可以保护系统文件免受未经授权的修改,确保系统的稳定性并防止恶意活动。此外,通过分配适当的所有权和组权限,管理员可以促进授权用户之间的协作,同时保持数据隐私和隔离。
然而,尽管权限重要,Linux 权限配置和管理不当仍可能导致安全漏洞。配置错误,如授予过多权限或在不再需要时未撤销访问权限,可能会使敏感数据暴露给未经授权的人,或增加内部威胁的风险。管理员必须定期审查和审核权限设置,以发现并纠正任何与组织安全政策不一致或偏离的地方。
此外,在大规模环境中管理权限的复杂性可能带来挑战。确保跨多个用户和组为众多文件和目录设置适当的权限,可能既耗时又容易出错。管理员必须实施适当的访问控制框架,利用自动化工具,遵循标准化程序,以减轻配置错误的风险,并维持一个安全的环境。权限命令是保护组织和管理文件的基本支柱。它们提供了执行访问控制、维护数据机密性以及减轻安全风险的手段。然而,管理员必须认真配置、监控和管理权限,以避免疏漏并确保系统和数据的持续完整性与安全。
权限类型
在 Linux 中,可以为文件和目录分配三种类型的权限:r、w和x。这些权限定义了用户对文件和目录的访问和控制级别。让我们逐一探讨每种权限及其含义和影响:
-
读取(
r)权限:-
读取权限允许用户查看和读取文件内容,或列出目录内容。
-
对于目录,读权限使用户能够查看目录内文件和子目录的名称。
需要注意的是,拥有读权限允许用户打开并查看文件的内容。然而,他们无法修改或删除文件,除非拥有额外的权限。
-
-
写(
w)权限:-
写权限允许用户修改或删除文件的内容,或在目录中创建新文件。
-
对于目录,写权限使得用户能够在目录内添加、删除和重命名文件和子目录。
-
-
执行(
x)权限:- 执行权限允许用户执行或运行文件,前提是它是程序或脚本。
对于目录,执行权限使得用户能够访问并进入目录,允许他们浏览目录的内容。与读权限不同,执行权限特别授予遍历或导航目录结构并访问其子目录的能力。有了执行权限,用户可以在目录中执行程序、脚本和命令,前提是他们拥有查看文件内容所需的读权限。这意味着他们可以运行目录中的可执行文件,但如果没有读权限,使用
ls等命令列出目录内容可能不被允许。
权限分别分配给三种不同的实体:文件所有者(也称为“用户”)、与文件关联的组,以及所有其他非所有者或非组成员的用户(其他人)。这些权限可以单独设置,也可以组合成一个三位数字的表示形式(例如,755),用以表示所有者、组和其他用户的权限。
当用户尝试访问文件或目录时,Linux 会按照特定的顺序检查权限:
-
用户所有权(所有者):首先,Linux 会检查访问的用户是否是文件的所有者。如果是所有者,系统将评估为所有者配置的权限。
-
组所有权(组):如果访问的用户不是所有者,Linux 会继续检查用户是否属于与文件关联的组。如果用户是组成员,系统会考虑为该组指定的权限。
-
其他人:如果前两种条件都不适用,Linux 会评估授予“其他人”的权限,这包括所有不属于所有者或组的用户。
这种顺序的权限检查方法使得 Linux 能够精确地确定访问权限。它确保了文件的访问和操作(如读取、写入和执行)是根据用户与文件所有者和组的关系来授予或拒绝的,从而促进了强有力的访问控制。
让我们深入探讨授予权限时使用的各种工具,从广泛使用的命令chmod开始。
chmod
chmod是 Linux 和类 Unix 操作系统中的一个命令,允许用户修改文件和目录的权限。它在控制文件访问和确保数据安全方面起着基础作用。chmod的重要性在于它能够定义谁可以读取、写入和执行文件,从而决定不同用户对系统资源的交互和控制级别。
chmod至关重要的原因之一是它可以在组织内部强制执行安全措施。通过设置适当的文件权限,系统管理员可以限制对敏感数据的未授权访问,并防止未经授权的修改。例如,关键的系统配置文件或机密文件可能需要严格的只读权限,以确保只有授权人员才能查看和访问这些文件。chmod使管理员能够建立精细的访问控制,从而在可访问性和安全性之间找到平衡。chmod的另一个重要作用是在管理用户访问权限时,不同的用户或组可以根据其角色和职责拥有不同级别的权限。chmod使管理员能够将特定的权限分配给个人或组,确保每个用户拥有执行任务所需的适当访问级别。这种控制有助于保持数据的完整性,防止未经授权的用户对文件进行意外或故意的损坏。通过使用chmod,管理员可以确保只有受信任的个人或组拥有修改关键文件或执行某些程序的必要权限。
此外,chmod在文件管理的行政方面也起着至关重要的作用。它允许管理员高效地组织和控制文件权限,使得在复杂的目录结构中管理访问权限更加容易。通过将chmod与其他工具如chown(更改所有者)一起使用,管理员可以有效地为文件和目录分配所有权和权限,从而简化与用户管理相关的行政任务。在多个用户和多样化文件系统的大型组织中,这一功能尤其关键,因为高效的权限管理对于维护秩序和安全至关重要。让我们探索并观察一些场景,展示如何有效使用此命令。
场景 1:授予文件读写权限:
-
确定要授予读写权限的文件。
-
使用带有适当选项的
chmod命令设置所需的权限:

图 5.1 – 授予文件权限
此命令授予对Management.txt文件的读写权限,允许用户既能读取文件,也能写入文件。
场景 2: 撤销组的执行权限:
-
确定你想要从中撤销特定组执行权限的文件或目录。
-
使用
chmod命令和适当的选项来撤销执行权限:-
g-w: 这个选项移除文件所属组的写权限。 -
g-x: 这个选项移除文件所属组的执行权限。这意味着该组成员即使有读和写权限,也无法执行文件:
-

图 5.2 – 撤销执行权限
这个命令将 ChgMod.sh 文件的组执行权限移除,确保组成员无法执行该脚本。
场景 3: 使用数字模式设置特定权限:
-
确定你想要为其设置特定权限的文件或目录。
-
计算所需权限的数字值——例如,读(
4)、写(2)和执行(1):user_permission=6 # read and write permission for the owner group_permission=4 # read permission for the group other_permission=4 # read permission for others在 Linux 中,文件和目录的权限通常用三位数字代码表示,其中每个数字对应一个特定的权限类型。三个数字分别表示所有者、组和其他用户的权限,顺序如下。每个数字是一个值的组合,表示读、写和执行权限,如下所示:
-
4: 这个数字表示读权限。它允许用户(或实体)查看文件内容或列出目录中的文件。 -
2: 这个数字表示写权限。它赋予用户修改或删除文件内容的能力,或在目录中创建新文件。 -
1: 这个数字表示执行权限。它使用户能够运行可执行文件和脚本,或进入(进入)目录。
要创建三位数字的权限代码,你可以根据所有者、组和其他用户的所需权限来组合这些值。以下是一个示例:
-
6: 这个代码表示所有者拥有读和写权限(4+2),但没有执行权限 -
7: 在这个代码中,所有者拥有读、写和执行权限(4+2+1) -
4: 这个代码表示该组只有只读权限,没有写入或执行权限。 -
5: 在这里,组拥有读和执行权限(4+1),但没有写权限 -
0: 这个代码表示某个实体(所有者、组或其他人)没有任何权限
通过理解权限代码中每个数字的含义,你可以精确控制谁可以读、写和执行文件和目录,从而确保系统的安全性和完整性。
-
-
使用
chmod命令和适当的数字模式来设置权限:

图 5.3 – 数字权限模式
这个命令将 Approvals.txt 文件的权限设置为所有者可读写,组可读,其他人可读。
场景 4:为目录及其子目录应用递归权限:
-
确定你想要递归应用权限的目录。
-
使用
chmod命令和适当的选项来递归地应用所需的权限:

图 5.4 – 为目录应用递归权限
此命令将权限 755(所有者具有读取、写入和执行权限,组和其他用户具有读取和执行权限)应用于 ConfigFile 目录及其所有子目录。
chmod 是一个强大的命令,在 Linux 和类 Unix 系统中,负责控制文件和目录的权限。它的重要性在于能够执行安全措施,管理用户访问权限,并简化管理员的任务。通过有效地使用 chmod,系统管理员可以确保组织内数据的机密性、完整性和可用性,同时保持结构化和安全的文件系统。
chown
chown 命令是 Linux 和基于 Unix 的操作系统中的一个强大工具,用于更改文件和目录的所有权。然而,需要注意的是,在许多情况下,你需要超级用户权限(通常通过 sudo 命令获得)来执行 chown。此命令允许系统管理员为文件分配新的所有权,确定哪些用户和组对文件有控制权。
chown 在管理文件权限、执行安全措施和组织管理文件方面起着至关重要的作用。它的一个关键用途是确保在 Linux 系统内有适当的访问控制和安全性。
通过为文件和目录指定正确的用户和组所有权,系统管理员可以维护安全性,控制谁可以访问、修改或删除特定资源。在多用户和多组环境中,这一点尤其重要,因为对文件访问的精确控制对于系统完整性和数据保护至关重要。
通过更改文件和目录的所有权,管理员可以限制对敏感信息的访问,并防止未经授权的用户修改或访问重要文件。在多用户环境和数据机密性至关重要的组织中,这一点尤其重要。chown 使管理员能够为特定用户和组分配所有权,确保只有授权的个人拥有必要的权限。
此外,chown 对于系统管理任务和文件管理至关重要。它允许管理员在用户被添加或从系统中删除时转移文件的所有权。例如,当用户帐户被删除时,必须将他们的文件所有权分配给另一个用户或系统帐户,以确保连续性并防止数据丢失。chown 还通过允许组成员之间的文件所有权转移,促进了团队内的高效协作,使他们能够在共享项目或文档上共同工作。
除了其安全性和管理优势外,chown 是组织和维护文件系统的基础工具。它使管理员能够通过根据角色或目的将所有权分配给特定用户或组,来对文件和目录进行分类。这有助于简化文件管理,简化权限管理,并确保文件正确地组织和可供合适的人访问。chown 在维护结构良好且高效的文件系统中发挥着至关重要的作用,增强了管理员和用户的生产力和易用性。
chown 命令允许进行多种类型的所有权变更,使管理员能够根据不同的标准修改文件和目录的所有权。以下是 Linux 权限中常用的所有权变更类型:
-
chown命令可用于更改文件或目录的用户所有权。通过指定一个新用户作为所有者,管理员可以将所有权转移给另一个用户帐户。 -
chown还支持更改文件或目录的组所有权。管理员可以将文件分配给一个新组,使该组的成员可以访问和修改该文件。 -
chown还提供了同时更改用户和组所有权的灵活性。这使得管理员能够完全修改文件或目录的所有权,分配新的用户和新组。 -
chown命令中的-R选项启用递归所有权更改,确保对指定目录中的所有文件和目录进行所有权修改。 -
chown命令中的-h选项确保文件上下文保持不变。
让我们探索不同的场景,展示如何有效地使用此命令:
- 更改目录及其内容的所有权:

图 5.5 – 更改目录的所有权
在此场景中,我们将 backup 目录及其所有内容的所有权转交给 tester1 用户,包括文件和子目录。组所有权也更改为 instructor。当将项目的所有权转交给新的团队负责人,或将文件按特定用户和组组织时,这非常有用。
- 恢复系统文件的所有权:

图 5.6 – 恢复文件的所有权
此命令递归地将backup目录下的所有文件和目录的所有权更改回root用户和root组。这对于保持系统配置文件的完整性和安全性非常重要,确保只有root用户具有修改它们的必要权限。
- 在共享目录中将所有权分配给特定用户:

图 5.7 – 在共享目录中将所有权分配给特定用户
在这里,project/backup/目录的所有权被更改为instructor用户和tester1组。这在多个用户需要访问共享目录,但要求对目录内某些文件或文件夹具有特定所有权的场景中非常有用。
通过自定义用户和组名称并应用适当的选项,您可以在各种情况下有效地管理所有权和权限。
最后,chown是系统管理员的一个关键命令。它更改文件所有权的能力使得适当的访问控制成为可能,增强了安全性,简化了管理任务,并有助于保持文件系统的良好组织。通过有效地利用chown,管理员可以确保数据机密性,维护系统完整性,并促进用户和组之间的高效协作。
在命令中使用绝对路径
在命令中使用绝对路径是操作 Linux 操作系统时的一个关键方面。绝对路径指的是文件或目录在文件系统层次结构中的完整精确位置。它从root目录(/)开始,并包含所有必要的目录,以精确指定位置。使用绝对路径的主要原因是提供一种明确且可靠的方式来引用文件或目录。通过使用绝对路径,您消除了对当前工作目录的依赖。这确保了命令将始终准确地指向目标文件或目录,无论您在文件系统中的位置如何。绝对路径消除了混淆,并防止了依赖相对路径时可能出现的潜在错误。
在需要从不同目录或不同用户执行脚本或命令的场景中,使用绝对路径的重要性变得显而易见。绝对路径可以确保无论执行环境如何,都能访问到相同的文件或目录。在进行系统管理任务、自动化脚本或多个用户共享环境操作时,尤其需要注意这一点。绝对路径在各种 Linux 操作中被广泛使用,尤其在执行需要精确指定文件或目录的命令时,如文件操作、数据备份、系统配置或应用程序部署。绝对路径常用于文件复制、移动、删除、权限修改和程序执行等命令中。通过使用绝对路径,你可以确保这些操作的准确性和可预测性,最大限度减少意外后果或错误的风险。为了更好地理解我们所说的内容,我们将重点展示不同场景下使用绝对路径命令的示例:
- 位于你主目录中的
document.txt,你希望将其复制到/var/www/html目录。你可以使用以下绝对路径命令来完成此操作:

图 5.8 – 将文件复制到指定目录
- 当前工作目录中的
document.txt,你希望将其移动到/home/instructor/Documents目录。你可以使用以下绝对路径命令来完成此操作:

图 5.9 – 将目录移动到另一个位置
/usr/local/bin目录,并且需要访问位于/etc目录下名为config.ini的配置文件。你可以使用以下绝对路径命令来引用该文件:

图 5.10 – 访问另一个目录中的文件
这些示例展示了如何使用绝对路径命令来指定文件和目录的确切位置,无论当前工作目录在哪里。通过提供完整路径,可以确保文件操作的准确性,避免文件引用的模糊性。
总之,绝对命令通过使用从root目录开始的完整路径来精确可靠地引用文件和目录。这对于保持一致性、简化系统管理任务、在脚本和程序中进行精确文件访问和操作,以及确保脚本在不同环境中的可移植性非常重要。通过理解并利用绝对路径的优势,系统管理员可以有效地浏览文件系统,并自信且精确地执行任务。
chgrp
在 Linux 中,chgrp 命令用于更改文件和目录的组所有权。chgrp的作用是确保适当的访问控制,并促进 Linux 系统中基于组的权限管理。使用 chgrp 的一个关键原因是将文件或目录的所有权与特定组对齐。在多用户环境中,不同的用户组需要对文件和目录有不同的访问权限,通过使用 chgrp 更改组所有权,管理员可以确保文件对适当的组可访问,并限制其他组的访问,从而增强敏感数据的安全性和完整性。
chgrp 的重要性在于其在有效管理文件权限中的作用。它与其他与权限相关的命令(如 chmod)协同工作,定义访问权限并保持正确的所有权。通过使用 chgrp,管理员可以将所有权分配给特定组,允许该组的成员协作处理文件和目录,同时保持对访问权限的控制。chgrp 在各种场景中都得到了广泛应用。
chown 和 chgrp 都用于修改文件和目录的所有权属性。然而,它们的用途不同:
-
chown用于更改文件或目录的所有者和组所有者。它允许你将文件或目录的完全所有权从一个用户转移到另一个用户,包括相关的组所有权。 -
chgrp则专门用于更改文件或目录的组所有权,同时保持文件所有者不变。它不会影响用户所有者,只会更改组所有者。
使用 chown 还是 chgrp 取决于你的具体需求。如果你想更改文件或目录的所有者和组所有者,请使用 chown。如果你只需要修改组所有权并保留用户所有者,则 chgrp 是合适的选择。
例如,在基于项目的环境中,管理员可以为每个项目创建不同的组,并为与项目相关的文件和目录分配适当的组所有权。这样,只有相关项目组的成员才能访问和修改这些资源。在管理共享目录时,chgrp 也很有价值,因为多个用户需要在文件上进行协作,它简化了授予或撤销基于组的权限的过程。
让我们来看一些示例:
-
将组所有权分配给目录。
假设你有一个名为
project的目录,需要由tester1组进行访问和修改。你可以使用以下命令:

图 5.11 – 使用 chgrp 分配组所有权给目录
-
递归更改组所有权。
你希望将名为
data的目录内所有文件和目录的组所有权更改为tester1组。你可以使用以下命令:

图 5.12 – 使用 chgrp -R 递归
通过使用 chgrp,管理员可以强制基于组的权限,简化用户之间的协作,并确保文件和目录仅对授权的个人或组可访问。这对于 Linux 中的组所有权管理至关重要。它提供了一种将文件和目录所有权与特定组对齐的方法,从而促进正确的访问控制并增强安全性。
umask
umask 命令用于设置新创建的文件和目录的默认文件权限。术语 umask 表示将 umask 值从最大权限中减去(通常文件权限为 666,目录权限为 777),从而得出实际权限。这个变化反映了 umask 值所修改的权限更准确的术语。
umask 命令的重要性在于增强安全性并在多用户环境中控制文件权限。通过设置适当的 umask 值,系统管理员可以确保新文件和目录拥有所需的权限。这有助于执行安全策略、防止未经授权的访问,并保持敏感数据的完整性。
umask 命令在多个用户共享同一系统或创建动态生成文件的脚本和应用程序时特别有用。通过定义特定的 umask 值,系统管理员可以在整个系统中建立一致的权限方案,从而减少敏感信息意外暴露的风险。
需要注意的是,设置更严格的 umask 可能会带来一定的后果。例如,如果全系统应用了非常严格的 umask,新安装的库及其相关文件可能无法被某些应用程序读取,从而可能导致兼容性问题。系统管理员应仔细考虑 umask 设置的影响,并在配置 umask 值时,在安全性和功能性之间找到平衡。
我们来看一些示例:
- 限制新创建文件的文件权限:

图 5.13 – 限制新创建文件的文件权限
在这种情况下,umask 命令用于计算新创建文件的默认权限。应用 umask 值 027 如下:
-
最左边的
0代表用户的最大权限,保持不变 -
中间位置的
2(屏蔽写权限)会减去组的写权限(2),从而有效地移除它 -
右侧位置的
7(屏蔽了所有其他用户的权限)减去了所有其他用户的权限(4代表读权限,2代表写权限,1代表执行权限),只保留读权限
接着,使用 touch 命令创建一个名为 systemconfig.txt 的新文件。最后,使用 ls -l 命令列出该文件的权限,权限应与 umask 值指定的权限一致。
- 允许组成员对目录中的文件进行读写操作:

图 5.14 – 允许组读/写权限
在这个场景中,umask 命令将默认权限掩码设置为 002,允许组成员对目录中创建的新文件具有读写权限。mkdir 命令用于创建一个名为 dir_files 的新目录。
现在,让我们深入探讨 setgid 位的意义。chmod g+s 命令用于在目录上设置 setgid 位。这个位具有特定的功能:它确保新创建的文件不仅继承父目录的组所有权,还会继承组权限。
例如,如果用户在 dir_files 目录中创建一个新文件,该文件将自动被分配为 dir_files 的组所有权,并且会具有与 dir_files 相同的组权限,即使该用户不是该组的成员。这在协作环境中尤其有用,在这种环境下,多个用户需要访问共享目录,确保这些目录中的文件保持正确的组所有权和权限。
- 为新创建的可执行文件设置限制性权限:

图 5.15 – 为新创建的可执行文件设置限制性权限
在这个场景中,umask 命令将默认权限掩码设置为 077,这意味着新创建的文件对于组和其他用户没有任何权限。使用 touch 命令创建一个名为 devportal.sh 的新文件。然后使用 chmod +x 命令使该文件变为可执行文件。由于 umask 值限制了组和其他用户的权限,生成的文件将仅对所有者具有执行权限。
sudo
sudo命令在 Linux 中是一个至关重要的工具,系统管理员通过它可以增强安全性、限制对关键操作的访问,并促进最小权限原则。sudo命令的重要性在于它能够控制和限制对特权操作的访问。通过使用sudo,管理员可以授予特定用户或用户组以提升权限执行某些命令的能力,同时仍保留其操作记录。这有助于减轻与对根账户无限制访问相关的风险,因为它提供了一种受控且可审计的方式来执行管理任务。
sudo命令的主要用途是以根用户或其他指定的具有提升权限的用户身份执行命令。它要求用户在执行特权命令之前,通过其凭据(如密码)进行身份验证。通过确保只有授权的用户才能执行管理员操作,这增加了额外的安全层,减少了意外或恶意修改系统的可能性。sudo的目的是促进最小权限原则,即用户应仅被授予完成任务所需的最小权限。通过使用sudo,管理员可以根据需要授予普通用户临时管理员权限,而不暴露系统于不必要的风险。这有助于维护系统的整体安全性和稳定性,并防止未经授权的修改或滥用特权命令。
让我们来看一些例子:
-
以特权用户身份安装软件。
在这种情况下,
sudo命令用于运行yum install(yum 代表sudo,用户会被提示输入密码,如果授权,则该命令会以提升的权限执行)。这允许用户安装软件或进行需要管理员权限的系统级更改:

图 5.16 – 以特权用户安装软件
-
重启系统并检查服务。
在这种情况下,使用
sudo命令来重新启动并验证sshd系统服务的状态。通过以管理员权限执行systemctl restart/status命令,用户可以重新启动并监控需要根用户权限的关键服务的状态。这保证了对服务配置所做的任何修改或应用的更新都能正确实施并激活:

图 5.17 – 使用 sudo 重新启动并验证服务状态
总结来说,Linux 权限命令在管理 Linux 系统中文件和目录的访问方面起着至关重要的作用。这些命令允许系统管理员控制和执行权限,确保只有授权用户才能读取、写入或执行特定文件。理解不同类型的权限以及如何操作它们对于维护系统的安全性和完整性至关重要。
摘要
本章深入探讨了 Linux 权限命令的领域,探索了各种工具和技术,以有效管理文件和目录的访问权限。本章首先介绍了 chmod 命令,该命令允许用户修改文件和目录的权限。理解 chmod 对于执行安全措施、控制用户访问和保护敏感数据至关重要。通过使用数字和符号表示,管理员可以为用户、组和其他人分配特定权限。接下来,我们探讨了 chown 命令,它用于更改文件和目录的所有权。通过将所有权分配给特定的用户和组,管理员可以控制访问权限并确保文件和目录的适当责任。理解 chown 对于管理文件权限、促进协作和维护数据完整性至关重要。本章还涉及了在命令中使用绝对路径的问题。绝对路径提供了文件或目录在文件系统层次结构中的精确位置。这一知识使管理员能够准确高效地浏览和操作文件和目录。理解如何使用绝对路径对于执行命令、管理权限和执行文件操作至关重要。此外,本章还探讨了 chgrp 命令,它用于更改文件和目录的组所有权。通过将文件和目录分配给特定的组,管理员可以控制访问权限和组级协作。我们还介绍了 umask 命令,它在为新创建的文件和目录设置默认权限时发挥着重要作用。通过定义 umask 值,管理员可以指定应用于文件的初始权限,确保一致性并遵守安全标准。最后,我们深入探讨了 sudo 命令,这是一种强大的工具,授予用户以提升权限执行命令的能力。通过使用 sudo,管理员可以执行需要 root 权限的管理任务,同时通过限制管理权限的范围来维护安全性。
总结来说,本章涵盖了 Linux 权限命令的广泛内容,包括 chown、chmod、chgrp、umask 和 sudo。这些命令在管理组权限、促进协作、建立标准化文件权限以及以提升的权限执行管理任务方面起着至关重要的作用。
在下一章中,我们将深入探讨使系统管理员能够管理挂载文件系统并执行文件操作任务的基本工具和技术。我们将涵盖四个关键主题:mount 命令、umount 命令、fuser 命令,以及使用 cat、grep 等命令进行文件操作。
第六章:文件系统挂载和操作命令
Linux 文件系统挂载和操作命令是一组重要工具,允许 Linux 系统管理员管理和操作文件系统及存储设备。这些命令提供了一种灵活高效的方式来挂载和卸载文件系统,管理磁盘分区,并执行各种文件操作任务。由于其多功能性、可靠性和易用性,这些命令在 Linux 环境中被广泛使用。系统管理员高度重视这些命令的一个关键原因是它们能够管理文件系统和存储设备。这些命令使管理员能够挂载不同类型的文件系统,如 ext4、NTFS 或 NFS,使数据在 Linux 系统中可访问和可用。它们还提供了管理网络文件系统的选项,允许管理员通过网络连接和访问远程文件系统。另一个这些工具的重要方面是它们在磁盘分区管理中的作用。通过这些工具,管理员可以创建、调整大小和删除磁盘分区,从而确保磁盘空间的高效分配,并根据特定要求组织数据。能够操作分区对设置多重启动系统、创建专用存储区域或为虚拟机管理磁盘空间等任务至关重要。
这些命令提供了额外的文件操作功能,例如导航和浏览文件系统、搜索文件、操作文件权限和所有权,以及执行复制、移动和删除文件等任务。这种灵活性使得文件管理和维护操作更加高效,确保 Linux 系统内数据的组织、完整性和安全性。
在本章中,我们将探讨这一类别中一些最重要的命令。这些命令在管理文件系统中起着至关重要的作用,允许挂载和卸载设备,并使数据访问和存储更加高效。系统管理员在建立设备与文件系统之间的连接、控制已挂载资源并执行各种文件操作时,严重依赖这些命令。
本章将涵盖以下主要内容:
-
Linux 挂载命令
-
mount 命令
-
umount 命令
-
fuser 命令
-
使用 cat、grep 等进行文件操作
Linux 挂载命令
在 Linux 中,挂载是指将文件系统连接到目录树结构中的特定目录,使操作系统及其用户能够访问该文件系统的内容。mount命令在这个过程中发挥着至关重要的作用,通过将设备或远程网络共享与挂载点(即文件系统变得可访问的目录)关联起来。通过使用mount命令,Linux 系统管理员可以动态地将各种类型的文件系统(包括本地磁盘、网络共享、虚拟文件系统和可移动存储设备)附加到文件系统层次结构中的特定挂载点。
Linux 的mount命令是 Linux 中连接文件系统到特定挂载点的关键工具,允许管理员有效地利用存储资源并提供无缝的数据访问。通过mount命令,Linux 系统管理员可以配置和管理各种文件系统类型,设置挂载选项,并集成额外的存储设备。挂载对于组织数据、促进系统启动过程以及扩展存储容量至关重要,是 Linux 文件系统管理的基本组成部分。
挂载命令
在 Linux 中,mount命令是一个强大的工具,用于将文件系统连接并集成到操作系统的目录树结构中。通过使用mount命令,管理员可以有效地扩展可用的存储容量,管理不同设备上的数据,并确保用户能够无缝访问数据。mount命令的重要性之一是它提供了存储管理的灵活性和可扩展性。通过mount命令,管理员可以轻松地将新的存储设备或网络共享添加到系统中,使其对用户可用,而不会干扰现有的文件系统。这使得存储资源的分配和利用更加高效,确保数据以有序和可访问的方式存储。
mount命令在系统启动过程中也起着至关重要的作用。在启动时,包含操作系统必要文件的根文件系统是通过mount命令挂载的。这一操作需要超级用户(sudo)权限。挂载根文件系统确保系统能够访问并加载必要的文件,以成功启动。如果没有mount命令,操作系统将无法定位和访问根文件系统,导致启动失败,系统无法使用。
让我们看一个使用mount命令的场景:
- 挂载 NFS 共享:以下截图显示了挂载 NFS 共享的代码:

图 6.1 – 挂载 NFS 共享
我们将逐步解析命令以便更清楚:
-
10.10.XXX.XX。这个 IP 地址表示托管共享目录的 NFS 服务器的网络位置。 -
/var被指定为导出的共享名称。这指的是在 NFS 服务器上被共享到网络的特定目录或文件系统。 -
/mnt/Keno。这个目录作为本地系统上的访问点,NFS 共享将被集成到此处。 -
最后,
ls -la /mnt/Keno命令用于以详细和全面的格式列出/mnt/Keno目录的内容。
通过执行ls -la /mnt/Keno,你将看到/mnt/Keno目录中所有文件和目录的详细列表,包括隐藏文件。输出将包括文件/目录权限、所有权、大小、修改日期和名称等信息。
- 挂载第二个存储设备和分区:以下截图显示了挂载第二个存储设备和分区的代码:

图 6.2 – 挂载第二个存储设备和分区 1
让我们分解命令以更清晰地理解:
-
第一个命令使用
mkdir命令创建了两个目录,/mnt/sdb和/mnt/sdb1。mkdir命令用于在指定位置创建目录。在这个例子中,它在/mnt目录下创建了两个目录:/mnt/sdb和/mnt/sdb1。这些目录将作为对应设备的挂载点。 -
第二个命令尝试使用
mount命令将/dev/sdb设备挂载到挂载点/mnt/sdb。mount命令用于将文件系统附加到目录结构中。在这种情况下,它试图将/dev/sdb设备(表示整个磁盘)挂载到挂载点/mnt/sdb。 -
第三个命令使用
mount命令将/dev/sdb1设备(代表磁盘上的特定分区)挂载到挂载点/mnt/sdb1。这个命令成功地将指定的分区挂载到相应的挂载点。 -
最后,第四个命令以树状格式列出所有可用的块设备信息。它提供了系统中块设备的概览,包括它们的名称、大小和分区信息。在执行完之前的步骤后,运行这个命令可以查看已挂载设备(在本例中为
sdb及其分区sdb1)和其他连接的存储设备的详细信息。
mount命令没有任何参数时,显示所有当前已挂载的文件系统。要检查sdb1是否已挂载,可以在输出中查找其条目。你可以使用Ctrl + F快捷键打开终端中的搜索弹窗,输入sdb1以快速定位相关信息。这允许你轻松地查明sdb1是否已挂载,并获取其关联的详细信息。如果sdb1已挂载,你将看到它的挂载点和其他相关信息:

图 6.3 – 安装第二个存储设备和分区 2
/etc/mtab文件包含当前挂载的文件系统列表。查找输出中与sdb1对应的行。该行将包含设备路径(/dev/sdb1)、挂载点和其他信息:
.jpg)
图 6.4 – 检查 /etc/mtab 文件
通过检查mount命令的输出或/etc/mtab文件,你可以确定sdb1是否已被挂载,并找到其对应的挂载点。
umount 命令
在 Linux 中,umount命令用于卸载或从目录树中分离已挂载的文件系统。它允许系统管理员安全地移除已挂载的设备或网络共享,确保所有待处理的读写操作完成,并在卸载文件系统之前,正确地刷新所有缓存数据。此命令对于维护文件系统的完整性和防止数据损坏至关重要。使用umount命令的主要原因之一是安全地断开存储设备或网络共享与系统的连接。当文件系统被挂载时,它在设备或网络共享与文件系统层次结构中的目录之间建立了连接。卸载文件系统可确保任何正在进行的读写操作完成,从而防止数据丢失或损坏。它还会释放与已挂载文件系统相关的系统资源,释放内存并提升系统性能。
需要注意的是,通过此命令挂载的目录并非永久性挂载。系统重启后,它们将自动卸载。如果你希望将挂载点设为永久,并在启动时自动挂载文件系统,你需要更新/etc/fstab(文件系统表)配置文件,添加相应的条目。这样可以确保挂载点在重启后依然有效,并且可以持续存在。
在 Linux 中,umount命令对管理可移动媒体(如 USB 驱动器或外部硬盘)至关重要。在物理断开设备与系统的连接之前,必须使用umount命令卸载它。这确保了所有数据都已写入设备,防止数据丢失或文件系统不一致。此外,umount命令还用于分离网络共享,如 NFS 或 Samba 挂载,使用户能够安全地断开远程文件系统。
需要注意的是,umount命令通常需要超级用户权限,因此你可能需要使用sudo来执行它。执行umount命令对于安全卸载 Linux 中的挂载文件系统至关重要。它确保数据完整性、释放系统资源,并促进存储设备或网络共享的正确移除。通过使用umount命令,系统管理员可以有效地管理文件系统连接,保持整体系统的稳定性和可靠性。
让我们来看一些使用umount命令的场景:
-
卸载 一个分区。
卸载分区确保所有待处理的读写操作完成,并且允许你安全地断开或对存储设备进行维护,避免数据损坏的风险:

图 6.5 – 卸载一个分区
执行这些命令后,系统将从各自的挂载点卸载指定的分区。你可以通过使用mount命令或检查df命令的输出,确认设备不再列为挂载在指定位置。
- 卸载 多个文件系统:

图 6.6 – 卸载多个文件系统
该命令同时卸载多个文件系统。在此示例中,它卸载了挂载在/mnt/usb1和/mnt/usb2的 USB 驱动器,以及挂载在/mnt/nfs的 NFS 共享。
fuser命令
Linux 中的fuser命令是一个强大的工具,用于识别当前正在访问或使用指定文件、目录或套接字的进程。它提供了有关哪些进程持有活动文件句柄或与给定文件或目录的网络连接的信息。该命令主要用于调查和解决与资源使用、文件锁定和无响应进程相关的问题。
请注意,fuser命令通常需要超级用户权限,因此你可能需要使用sudo来执行它。fuser命令的重要性在于它帮助系统管理员识别和解决与文件访问相关的冲突。通过使用适当的选项运行该命令并指定目标文件或目录,管理员可以获取到一个进程 ID(PIDs)列表,这些进程正打开某个文件或目录。
这些信息在文件被锁定的场景中非常有价值,这会阻止其他进程访问或修改该文件。通过识别负责锁定的进程,管理员可以采取适当的措施,如终止或重启进程,以释放文件锁并恢复正常操作。
fuser 命令的重要性在于其在维护文件系统完整性中的角色。它确保在执行任何维护任务之前,设备绑定的资源得到正确释放。这一点非常关键,因为试图卸载或分离仍在使用中的设备可能导致意外错误和数据不一致性。通过识别哪些进程正在使用特定文件、目录或套接字,管理员可以解决资源争用问题,排查文件访问冲突,并确保系统的平稳运行。此外,fuser 命令帮助释放文件锁并促进安全资源管理。它允许管理员在对文件系统进行更改之前,积极解决任何潜在的冲突或依赖关系。通过防止进程独占访问文件或目录,fuser 命令确保其他操作能够无缝执行。最终,fuser 命令增强了系统稳定性,最小化了数据丢失的风险,并有助于管理文件系统和存储设备的整体效率。
让我们探讨一些基于场景的示例,展示了使用 fuser 命令的用法:
- 检查当前正在访问文件或目录的进程:

图 6.7 – 检查当前正在访问文件或目录的进程
下面是命令的各个部分的功能:
-
fuser是正在执行的实际命令 -
-v是一个选项,代表详细模式,提供关于访问目录的进程的更详细信息。 -
/home/instructor是要检查的目录的路径。
当你运行这个命令时,它会显示一个进程列表,以及它们的 PID,这些进程目前正在使用指定目录内的文件或目录。详细输出将包括额外的信息,如用户、访问类型(读、写或两者)和访问时间。
- 检查当前目录中使用特定文件的进程:

图 6.8 – 检查当前目录中使用特定文件的进程
下面是命令的各个部分的功能:
-
fuser是正在执行的实际命令。 -
.表示当前目录
当你运行这个命令时,它会显示一个进程列表,以及它们的 PID,这些进程目前正在使用当前目录内的文件或目录。这包括当前目录内的任何子目录和文件。
输出还显示该进程的 PID 为12102。这意味着操作系统可以使用这个唯一的标识符来识别该进程,而 PID 输出中的c字符表示该进程已打开文件进行读写。
fuser命令将在ACCESS列中列出以下类型的访问:
-
C:可读写 -
R:仅可读 -
W:仅供写入 -
U:由已不再运行的进程打开 -
4330。-n选项指定了网络协议。

图 6.9 – 确定使用网络套接字的进程
下面是命令及其组成部分的详细说明:
-
fuser是命令本身,代表文件用户。它用于识别正在使用文件或网络套接字的进程。 -
-n tcp是一个指定要搜索的网络协议类型的选项。在这种情况下,它设置为tcp,表示我们关心的是 TCP 连接。 -
4330是我们要检查的特定 TCP 端口号。
当你运行此命令时,它将提供有关当前正在使用 TCP 端口4330的进程的信息。它将显示进程的 PID,以及其他详细信息,如拥有该进程的用户和与之关联的命令。
使用cat、grep等命令进行文件操作
使用像cat和grep这样的命令是 Linux 及其他类 Unix 系统中处理文件的基础。这些命令提供了强大且多功能的工具,用于管理和提取文件中的信息。它们对于系统管理员、开发者以及任何定期处理文本文件的人来说都是必不可少的。文件操作命令的重要性之一是它们能够高效地处理和操作大量数据。像cat、grep这样的命令是用于在文件中进行搜索和模式匹配的。grep允许用户搜索特定的文本模式,提取相关信息并过滤掉不必要的数据。这对于分析日志文件、从源文件中提取特定的代码行,或者在文件中搜索特定的错误消息非常有价值。其多功能性和高效性使它成为各种任务的不可或缺的工具,如数据分析、系统故障排除和日志文件解析。
除了cat和grep之外,Linux 中还有许多其他文件操作命令,每个命令都有特定的用途。例如,像sed和awk这样的命令提供了高级的文本处理功能,使用户能够执行诸如搜索和替换、基于模式的编辑以及字段提取等复杂操作。这些命令使用户能够自动化重复任务、转换数据并精确控制文件操作。高效地使用这些命令进行文件操作可以提高生产力,支持有效的数据分析,并促进系统管理和开发任务的自动化。让我们来看看系统管理员如何在日常任务中利用这些强大的工具:
- 使用
cat和grep提取包含特定模式的行:

图 6.10 – 使用 cat 和 grep 提取包含特定模式的行
cat output.txt | grep "pattern"命令用于显示output.txt文件中与指定模式匹配的行。这里,cat output.txt用于显示output.txt的内容,输出通过管道(|)传递给grep命令。grep命令搜索包含指定模式的行,并只显示这些行。要使用grep,你只需运行类似grep "search_term" your_file的命令,其中search_term是你要搜索的文本或模式,your_file是你要搜索的文件。
- 使用
sed替换文件中的文本:

图 6.11 – 使用 sed 替换文件中的文本
sed -i 's/pattern/mad_max/g' output.txt命令用于替换output.txt文件中指定模式的所有出现,并就地修改文件。
下面是命令的详细说明:
-
sed:流编辑器命令,用于文本操作。 -
-i:指定“就地”编辑模式,这意味着更改将直接应用于output.txt文件。 -
's/pattern/mad_max/g':这是一个替换命令,格式为's/old_text/new_text/g'。它告诉sed搜索指定的模式并将其替换为mad_max。g标志用于在每个匹配行上进行全局替换,而不仅仅是替换第一次出现的匹配项。
最后,cat output.txt | grep "mad_max"命令用于搜索output.txt文件中包含mad_max的行。
-
使用
awk根据条件过滤行。该命令使用
awk根据条件过滤文件(output2.txt)中的行,条件是第一列的值大于 10。只有满足条件的行会被显示:

图 6.12 – awk – 基于条件过滤行
awk '$1 > 10' output2.txt命令用于从文件中过滤并打印第一列值大于 10 的行。以下是该命令每个部分的解释:
-
awk:Linux 中用于文本处理和模式扫描的命令行工具。 -
'$1 > 10':要匹配的输入文件中的模式或条件。在这种情况下,它检查第一列(用$1表示)的值是否大于 10。 -
output2.txt:命令读取输入的文件名称。
当你运行这个命令时,awk会读取output2.txt文件的内容,并对每一行进行给定模式的评估。如果某一行的第一列值大于 10,该行将被输出。
例如,假设file.txt包含以下几行:

图 6.13 – awk 示例 1
运行awk '$1 > 10' file.txt命令将输出以下内容:

图 6.14 – awk 示例 2
它会过滤掉第一列值不大于 10 的行,并仅打印满足条件的行。
- 使用
cat、grep和wc统计文件中某个特定单词的出现次数(单词计数):

图 6.15 – 使用 cat、grep 和 wc 统计文件中某个特定单词的出现次数
该命令统计output2.txt文件中精确单词disproperty的出现次数。输出结果以单行计数形式显示。以下是命令的详细说明:
-
在第一个命令
cat output2.txt | grep -w "disproperty" | wc -l中,output2.txt文件被传递给cat命令,cat读取并显示文件内容。输出然后通过管道(|)传递给带有-w标志的grep命令,grep在输入中搜索精确的单词disproperty。结果再次通过管道传递给wc -l命令,后者统计行数(-l)。该命令的输出是1,表示disproperty在文件中出现一次。 -
在第二个命令
cat output2.txt | grep -w "mad_max" | wc -l中,执行相同的过程。output2.txt文件被cat读取,输出通过管道传递给grep -w "mad_max"来搜索精确单词mad_max。结果再通过管道传递给wc -l来统计行数。在这种情况下,输出是2,表示mad_max在文件中出现两次。
这些示例展示了cat、grep、sed和awk命令在执行各种文件操作任务(如过滤行、替换文本、提取字段和计数出现次数)中的多功能性和强大功能。
总体来说,文件操作命令如cat、grep、sed和awk在 Linux 中管理和提取文件信息中起着至关重要的作用。它们提供了强大而高效的工具,用于处理基于文本的数据,使用户能够轻松地连接、搜索、过滤和转换文件。它们的重要性在于能够处理大量数据,促进高效的数据分析,并自动化重复任务。通过掌握这些命令,用户能够获得有效处理文件的宝贵技能,从而更加高效地完成任务,提高 Linux 环境中的整体生产力。
总结来说,Linux 挂载和操作命令是管理文件系统、挂载和卸载设备、以及在 Linux 中操作文件的关键工具。这些命令使系统管理员能够在设备和文件系统之间建立连接,控制对挂载资源的访问,并执行各种文件操作。通过熟练地使用这些命令,系统管理员可以优化数据访问和存储,实施强有力的安全措施,并保持文件系统的完整性。总体而言,Linux 挂载和操作命令在确保高效的系统管理、保护数据安全和维持一个安全且有序的 Linux 环境中是不可或缺的。
总结
本章集中讨论了 Linux 挂载和操作命令,它们是管理文件系统、挂载和卸载设备、以及在 Linux 中操作文件的基本工具。本章首先强调了这些命令在建立设备与文件系统之间的连接、控制对挂载资源的访问以及执行各种文件操作中的重要性。mount命令作为核心工具,允许管理员将文件系统和设备挂载到特定的挂载点,确保高效的数据访问和存储。umount命令作为其对立命令,允许安全地卸载文件系统并分离存储设备。fuser命令在需要检查是否有活动进程访问文件或目录(例如在卸载或分离设备之前)时尤为宝贵,有效防止数据丢失或损坏。此外,本章还探讨了cat、grep、sed和awk命令在文件操作中的应用,包括搜索模式、替换文本和提取特定数据。这些命令为高效地操作和分析文件提供了多种灵活的方式。总体来说,Linux 挂载和操作命令为管理员提供了管理文件系统、控制访问、排除冲突并确保 Linux 环境完整性和安全性的手段。
在接下来的章节中,我们将专门介绍文件内容和转换命令,深入探讨一系列强大的工具,这些工具使系统管理员能够在 Linux 环境中有效地处理和修改文件内容。本章作为我们常用命令系列的一部分,将广泛覆盖一系列不可或缺的命令,这些命令在无缝的文件内容管理和高效的文件格式转换中得到广泛应用。
第三部分:常用命令 - 第二部分
在第三部分,我们专注于常用的 Linux 命令,用于文件分析、转换、激活、监控、故障排除、网络管理等。本节简化了各种任务的实际命令使用。
本节包含以下章节:
-
第七章,文件内容与转换
-
第八章,Linux SWAP
-
第九章,监控与调试
-
第十章,Linux IPTABLES 与网络管理
-
第十一章,文件传输、下载与日志管理
第七章:文件内容和转换命令
文件内容和转换命令在 Linux 系统管理员的日常操作中发挥着关键作用。这些命令提供了广泛的工具和功能,用于高效管理和操作 Linux 环境中的文件内容。凭借访问、搜索、修改和转换文件内容的能力,这些命令提供了巨大的灵活性和便利性,使其成为管理员不可或缺的工具。文件内容和转换命令被 Linux 系统管理员广泛使用的一个重要原因是它们在处理文本数据中的重要性。这些命令使管理员能够查看和分析文件内容、提取特定信息,并基于模式或条件执行操作。无论是搜索特定关键词、筛选数据,还是从日志文件中提取相关信息,这些命令都简化了过程,并使管理员能够高效处理大量文本数据。
此外,文件内容和转换命令在管理和操作文件格式中具有至关重要的作用。它们提供了将文件在不同格式之间转换的能力,如在 Unix 和 Windows 行结束符之间转换、字符编码转换以及根据特定需求转换文件格式。这种多功能性确保了不同系统和应用之间的无缝兼容性和互操作性,使得数据交换和在各种环境下处理文件变得更加容易。文件内容和转换命令的广泛应用还归功于它们在自动化任务和提高生产力方面的作用。这些命令可以与脚本和自动化工具结合,执行对文件的复杂操作,如批处理、数据提取和数据转换。通过利用脚本和这些命令的强大功能,管理员可以创建高效的工作流程,节省时间,并确保在多个任务或系统中保持文件操作的一致性。这些命令是 Linux 系统管理员高度赞赏的不可或缺的工具,因其在管理文件内容、提取相关信息以及进行文件格式转换方面的卓越能力。这些命令的重要性来源于它们处理文本数据的出色能力、高效处理各种文件格式的能力,并通过自动化简化任务,从而提高生产力和运营效率。
在本章中,我们将探讨文件内容和转换命令的迷人领域,这些是系统管理员非常看重的工具。它们在管理和操作文件内容、提取相关信息以及执行文件格式转换方面起着关键作用。它们提供了一系列强大的功能,提升了管理员工作效率和生产力。在本章中,我们将涵盖以下主要主题:
-
tail 和 file 命令
-
转换命令
-
使用 dos2unix 将 MS-DOS 文件转换为 Unix 格式
-
使用 unix2dos 将 Unix 文件转换为 MS-DOS 格式
-
recode 命令
tail 和 file 命令
tail和file命令是 Linux 中强大的工具,扮演着文件管理和分析的重要角色。tail命令用于显示文件的结尾部分或实时监控文件变化。它对于监控日志文件特别有用,管理员可以查看最新的条目并跟踪系统活动。tail命令还允许多种选项,如指定显示的行数或持续更新输出。它提供的实时文件内容视图使其成为排查问题和系统监控中不可或缺的工具。另一方面,file命令用于确定给定文件的文件类型。它通过检查文件内容并提供有关其格式的信息,比如是文本文件、二进制文件,还是某种特定类型的文件,如图像、音频或视频文件。file命令使用文件签名数据库并进行深入分析,以准确识别文件类型。这些信息对于决定如何处理和解释文件至关重要,因为不同的文件类型可能需要不同的处理或操作。
tail和file命令的重要性在于它们能够提供关于文件内容和特征的关键信息。通过使用tail命令,管理员可以快速访问并监控日志文件中的最新更新,帮助调试和排查系统问题。而file命令则帮助管理员识别未知或模糊的文件类型,确保使用适当的工具和应用程序进行进一步处理或分析。这些命令通过提供即时的文件信息,节省了时间和精力,使管理员能够做出明智的决策并采取适当的行动。让我们看几个例子:
- 使用
tail命令持续显示syslog.log文件的最后 10 行,并在新的日志条目追加时实时更新输出。这有助于监控系统事件并在问题发生时进行排查:

图 7.1 – 实时监控日志文件
当你运行 tail -f /var/log/syslog.log 命令时,光标会持续闪烁,因为带有 -f 选项的 tail 命令会不断监控指定文件的最新更新或变化。它实时跟踪文件,并显示任何附加到文件的新内容。闪烁的光标表示 tail 命令正在积极监控文件,等待事件发生。一旦 /var/log/syslog.log 文件中有新条目被写入,它们将显示在终端窗口中,光标也会相应更新。
这一功能对于监控日志文件或其他需要实时更新的文件特别有用。它允许系统管理员跟踪最新事件或变化,而无需手动刷新文件显示。闪烁的光标作为一个视觉指示,表示命令正在积极运行并捕捉新的内容。
tail命令用于显示messages日志文件的最后 20 行。通过指定-n选项,管理员可以自定义显示的行数,这在处理大型日志文件时非常有用:

图 7.2 – 查看大型日志文件的最后 20 行
file命令用于确定backup.tar.gz文件的文件类型,并提供其格式信息。它将文件识别为一个gzip压缩文件,并可能显示额外的细节,例如版本:

图 7.3 – 确定文档的文件类型
file命令用于分析ftp二进制文件,并提供其格式信息。它将文件识别为二进制文件,并可能根据文件的结构和内容提供额外的详细信息:

图 7.4 – 分析二进制文件
这些示例展示了 tail 和 file 命令在各种文件管理和分析场景中的多功能性。无论是监控日志文件、检查文件类型,还是分析二进制数据,这些命令都为系统管理员提供了强大的功能。它们的易用性、多功能性以及能够提供关键信息的能力,使得 tail 和 file 命令在文件管理和分析任务中不可或缺。
转换命令
convert命令是一个强大的工具,在 Linux 系统中用于文件转换和处理。它提供了一个方便的方式来转换不同格式之间的文件,例如图像格式、文档格式等。这个命令非常多功能,支持广泛的文件格式,是 Linux 系统管理员和用户不可或缺的工具。convert命令重要的原因之一是它能够促进跨平台兼容性。它允许将文件从一种格式转换为另一种格式,确保文件能够在不同系统和应用程序之间轻松访问和使用。例如,它可以将图像文件从一种格式转换为另一种格式,使其与各种图像查看或编辑软件兼容。这增强了文件的互操作性,促进了无缝协作。convert命令常用于各种用途,如调整图像大小、改变图像质量、应用滤镜或效果、合并或拆分文档等。它的使用不仅限于基本的文件格式转换,还提供了修改和增强文件的附加功能。这种多功能性使其成为图形设计、网页开发、文档处理和多媒体制作等领域的重要工具。
convert命令的目的是简化和自动化文件转换任务。与其使用不同的软件或在线工具手动转换文件,不如直接在命令行中使用该命令进行转换。特别是在处理大量文件时,这样可以节省时间和精力。此外,该命令可以集成到脚本或自动化工作流中,从而实现高效且一致的文件转换过程。既然我们已经详细讨论了convert命令,接下来让我们通过一些实例来实践我们的知识。我们将使用convert命令来执行各种文件转换:
convert命令用于将 PNG 图像文件转换为 JPEG 格式,并将其保存为新的output.jpg文件:

图 7.5 – 将图像文件从 PNG 格式转换为 JPEG 格式(1)

图 7.6 – 将图像文件从 PNG 格式转换为 JPEG 格式(2)
当需要将图像文件转换为不同格式时,这个命令非常有用,比如在准备图像以便用于网页显示或与某些应用程序兼容时。
让我们分解一下图 7.5和7.6:
-
file Screenshot\ 2023-06-07\ 211511.png:此命令使用file命令来确定Screenshot 2023-06-07 211511.png文件的类型。它显示有关文件的信息,例如格式、尺寸、色深和是否交错。在这种情况下,它表示该文件是一个 PNG 图像,分辨率为 853 x 394 像素,使用 8 位 RGBA 色彩空间,并且是非交错的。 -
convert Screenshot\ 2023-06-07\ 211511.png output.jpg:此命令利用convert命令将Screenshot 2023-06-07 211511.png文件转换为 JPEG 格式,并将其保存为output.jpg。
以下是output.jpg文件的截图:

图 7.7 – output.jpg
在此案例中,它将文件从 PNG 格式转换为 JPEG 格式,这有助于文件大小的减少或与仅支持 JPEG 图像的应用程序的兼容性。
convert命令,您可以将input.pdf文件(一种 PDF 文档)转换为一系列 JPEG 图像。生成的图像将命名为output-1.jpg、output-2.jpg等。这个转换过程允许您提取 PDF 的内容,并将每一页保存为单独的 JPEG 图像:

图 7.8 – 将 PDF 文件转换为一系列 JPEG 图像
PDF 的每一页都被转换为单独的 JPEG 图像。当您想提取单独的页面或将 PDF 转换为图像文件以进行进一步处理或显示时,这将非常有用。
让我们分析一下图 7.8:
-
convert OWASP\ Checklist.pdf output-%d.jpg:此命令利用convert命令将OWASP Checklist.pdf文件转换为一系列 JPEG 图像。%d字符是占位符,会被顺序数字替换,创建多个输出文件,命名为output-1.jpg、output-2.jpg等。生成的 JPEG 图像将保存在当前目录中。 -
ls -l output*:此命令使用ls命令并带有-l选项,显示以output开头的文件的详细信息。星号(*)作为通配符,匹配跟在output后面的任何字符。-l选项提供长格式列表,显示文件的权限、所有者、组、文件大小、修改时间戳以及其他属性。此命令用于列出由先前的convert命令创建的输出文件的详细信息。
这个 convert 命令提供了一种多功能且高效的解决方案,用于在 Linux 环境中执行文件格式转换和处理。凭借其对多种格式的广泛支持、用户友好的界面和自动化能力,convert 命令成为高效管理和转换文件的必备工具。无论目的是实现跨平台兼容性、进行图像编辑,还是促进文档处理,convert 命令都是一种可靠的工具,用于转换和编辑文件,简化流程并提高整体生产力。
使用 dos2unix 将 MS-DOS 文件转换为 Unix 格式
dos2unix 是一个强大的工具,用于将文本文件从 MS-DOS/Windows 格式转换为 Unix 格式。在 MS-DOS 格式中,文本文件中的行由回车符和换行符(\r\n)终止,而在 Unix 格式中,行由单一的换行符(\n)终止。dos2unix 命令会自动执行必要的转换,确保不同平台之间的兼容性。该命令在需要在 Unix 环境中处理或执行文本文件时特别有用。使用 dos2unix 命令的主要原因之一是确保在 MS-DOS/Windows 和 Unix 系统之间传输或共享文件时,文件能够无缝兼容。通过将 MS-DOS 格式的文件转换为 Unix 格式,消除了与行终止符相关的潜在问题。这在处理脚本、配置文件或任何需要 Unix 工具处理的基于文本的文件时至关重要。dos2unix 命令确保文件能够在 Unix 环境中正确读取、编辑和执行,确保一致和可靠的结果。
dos2unix 命令的重要性在于它能够促进 MS-DOS/Windows 和 Unix 系统之间的顺畅协作和互操作性。它确保在 MS-DOS 中创建或修改的文件可以无缝地在 Unix 环境中使用,从而支持高效的跨平台工作流。此外,该命令在 shell 脚本编写和自动化任务中得到了广泛应用。它允许系统管理员自动化多个文件的转换过程,或者将其集成到脚本中,以确保一致的文件格式标准。这有助于维护文件的完整性,并通过消除手动转换的工作,提高整体生产力。我们将提供演示并通过以下示例进行讲解:
- 调用
dos2unix工具,它会执行转换过程。该工具检测到file.txt的文件格式为 MS-DOS,然后将其转换为 Unix 格式。转换过程涉及调整行结束符和其他格式元素,以符合 Unix 标准:

图 7.9 – 将单个 MS-DOS 文件转换为 Unix 格式
在命令的输出中,你可以看到类似 dos2unix: converting file file.txt to Unix format... 的信息。此消息表明转换过程正在进行,且指定的文件 file.txt 正在被转换为 Unix 格式。
find /home/instructor/Downloads/MS-files/ -type f -exec dos2unix {} +命令用于查找并将特定目录及其子目录中的多个文件从 MS-DOS 格式转换为 Unix 格式:

图 7.10 – 递归地将目录及其子目录中的所有 MS-DOS 文件转换为 Unix 格式
以下是该命令的工作原理:
-
find:启动find命令,用于查找文件和目录。 -
/home/instructor/Downloads/MS-files/:指定搜索开始的目录,在此案例中,它是Downloads目录中的MS-files目录。 -
-type f:指定搜索仅考虑常规文件,排除目录和其他类型的文件。 -
-exec:指定对于每个找到的文件应执行以下命令。 -
dos2unix {} +:调用dos2unix命令将找到的文件转换为 Unix 格式。{}字符作为占位符,代表find命令找到的每个文件名,+符号表示可以将多个文件传递给一次dos2unix命令执行。
执行此命令后,指定目录及其子目录中的所有常规文件将被搜索。每当找到一个文件,dos2unix 命令就会执行,将其从 MS-DOS 格式转换为 Unix 格式。该命令支持高效的批处理多个文件,减少了单独执行每个转换命令的需求。
dos2unix 是一个基本命令,旨在将 MS-DOS 格式的文本文件转换为 Unix 格式。它的应用确保了跨平台兼容性,防止因行终止符的不同而产生的问题。通过无缝的文件转换,它促进了 MS-DOS/Windows 和 Unix 系统之间的协作与互操作性。此外,这个命令在自动化活动和脚本中也具有重要意义,能够简化文件转换过程,同时保持文件格式的一致性。
使用 unix2dos 将 Unix 文件转换为 MS-DOS 格式
现在,让我们来看看这个邪恶的双胞胎——unix2dos。它是一个命令行工具,用于将文本文件从 Unix/Linux 格式转换为 MS-DOS/Windows 格式。unix2dos起源于 Unix 的早期,旨在促进 Unix 系统与 MS-DOS 系统之间的文件兼容性。在 Unix 格式中,行结尾由单一的换行符(\n)表示,而在 MS-DOS 格式中,行结尾由回车符加换行符(\r\n)表示。unix2dos命令的重要性在于它能够确保 Unix 和 MS-DOS 系统之间的文件兼容性和互操作性。在计算机早期,Unix 和 MS-DOS 是用于不同平台的流行操作系统,而文件格式差异在这些系统之间共享文件时带来了挑战。unix2dos命令通过将 Unix 文件转换为 MS-DOS 格式提供了解决方案,使它们能够在 MS-DOS 系统上被读取和使用。这个转换过程确保行结尾能够被正确解析,从而保持文件内容的完整性。
unix2dos命令主要用于将文本文件从 Unix/Linux 系统传输到 MS-DOS/Windows 系统。当共享包含文本内容的文件时,尤其有用,例如代码文件、配置文件、脚本或任何其他文本文件。通过使用unix2dos将 Unix 文件转换为 MS-DOS 格式,用户可以确保文件兼容,并且可以在 MS-DOS/Windows 系统上正确查看、编辑和执行。这条命令通常用于需要在 Unix 和 MS-DOS 系统之间进行协作或文件交换的场景。例如,让我们转换一个单独的文件。
该命令将document.txt从 Unix 格式转换为 MS-DOS 格式,但首先让我们检查一下文件:

图 7.11 – 将 file.txt 从 Unix 格式转换为 MS-DOS 格式
从前面的截图中我们可以看到,我们创建的文件documents.unix包含一些由于 MS-DOS 系统的限制而无法读取的内容或特性。在尝试在 MS-DOS 系统上打开或读取此文件时,可能会遇到错误或显示不正确的内容。
现在,让我们转换这个文件。
unix2dos --convmode ascii documents.unix命令使用unix2dos工具将名为documents.unix的文件从 Unix 格式转换为 DOS 格式:

图 7.12 – unix2dos 将 documents.unix 文件转换为 DOS 格式
当运行此命令时,指定了--convmode ascii标志,这表示转换应使用--convmode ascii,即指示unix2dos使用 ASCII 编码进行文件转换。
执行该命令后,unix2dos: converting file documents.unix to DOS format...的输出消息表示转换过程正在进行。原始的documents.unix文件正在转换为 DOS 格式,这意味着文件中的行结束符从 Unix 换行符(\n)被改为 DOS 格式,即由回车符(\r)和换行符(\n)组成。转换完成后,documents.unix文件将变为 DOS 格式,使其能够与基于 DOS 的系统和应用程序兼容。此格式的变化确保文件能够在 DOS 或 Windows 平台上正确显示和处理,因为这些平台期望文件具有 DOS 风格的行结束符。
unix2dos的目的是通过转换文件格式,确保 Unix 和 MS-DOS 系统之间的文本文件能够无缝交换,从而实现兼容性。它消除了由于不兼容的行结束符所可能引发的问题,确保文件能够在 MS-DOS/Windows 系统上正确解析和显示。该命令通过将换行符转换为回车和换行符序列,遵循 MS-DOS/Windows 平台的行结束符约定,达成这一目的。这个转换过程允许文件在共享、编辑和处理时,原始内容不会丢失或失真,实现 Unix 与 MS-DOS 系统之间的平稳互操作。
recode 命令
recode命令是 Linux 中一个多功能且强大的工具,用于字符集的转换和处理。它的目的是将文本文件的编码从一种字符集转换到另一种字符集,确保不同系统和应用程序之间的兼容性和正确解释。该命令支持广泛的字符集,使其成为处理多语言数据和解决数据交换中可能出现的编码问题的宝贵工具。recode命令之所以重要,主要是因为它能够确保文本数据的一致性和准确性。不同的系统和应用程序可能使用不同的字符集或编码,导致乱码或显示不正确的文本。通过使用recode,系统管理员可以将文本文件转换为所需的字符集,从而消除这些问题,确保文本在各种平台上的正确渲染和解释。
recode命令在需要字符集转换的场景中得到广泛应用。它能够实现使用不同编码的系统之间的无缝集成和数据交换,确保文本表示的兼容性和一致性。这在多语言环境中尤为重要,因为文本数据可能包含来自不同语言和字符集的字符。通过使用recode命令,系统管理员可以克服编码障碍,促进在使用不同字符集的用户之间的顺畅沟通与协作。通过以下示例,我们可以深入了解recode命令的实际应用及其带来的好处:
ISO-8859-1格式的文件需要转换为UTF-8。recode命令可以通过执行以下命令完成此操作:

图 7.13 – 转换文件编码
下面是命令的分解:
-
recode UTF-8..ISO-8859-1 file.txt:此命令将file.txt的字符编码从UTF-8转换为ISO-8859-1。UTF-8是一种广泛使用的字符编码器,支持多种语言的字符,而ISO-8859-1(也称为UTF-8编码字符的对应ISO-8859-1等效字符)。 -
recode ISO-8859-1..UTF-8 file.txt:此命令将file.txt的字符编码从ISO-8859-1转换为UTF-8。此命令是对前一个命令过程的逆操作,将ISO-8859-1编码的字符映射到其对应的UTF-8表示。
这两个命令都使用了recode命令行工具,这是 Linux 中常用的字符编码转换工具。这些命令的目的是便于在不同字符编码之间转换文本文件,使得它们能够被预期特定编码的系统或应用程序正确地解读和显示。
总结来说,Linux 中的recode命令是一个重要的字符集转换和处理工具。它的意义在于能够确保不同系统和应用程序之间文本数据的兼容性、正确呈现和准确解释。通过使用recode,系统管理员可以解决编码问题,实现文本表示的一致性,并促进多语言环境中的无缝数据交换。
总结
本章为我们提供了对在 Linux 环境中转换和操作文件内容所需的各种命令的全面了解。章节涵盖了一系列重要命令,包括tail、file、convert、dos2unix、unix2dos 和 recode。这些命令为处理文件、执行格式转换以及确保不同系统之间的兼容性提供了强大的功能。tail 和 file 命令使我们能够提取文件的特定部分并收集有关文件类型和格式的宝贵信息。convert 命令被证明是一个多功能的工具,用于转换文件格式,允许我们将文件从一种格式转换为另一种格式。
在下一章,我们将深入探讨 Linux 的 SWAP 命令。这些命令对于管理交换空间至关重要,提供额外的内存资源、初始化分区或文件以供交换使用,并监控内存消耗。通过理解和使用这些命令,系统管理员可以优化内存管理,并提高 Linux 环境中的系统性能。
第八章:Linux SWAP 命令
Linux SWAP 命令是 Linux 系统管理中的一个重要组成部分,允许管理员有效管理操作系统中的交换空间。交换空间是内存管理中的关键组件,当物理 RAM 容量不足时,提供额外的虚拟内存。这些命令在 Linux 系统管理员中广泛使用,因为它们在优化系统性能和确保高效内存利用方面具有重要作用。Linux SWAP 命令的重要性在于它们能够增强系统稳定性并防止与内存耗尽相关的问题。通过有效管理交换空间,管理员可以缓解内存瓶颈,使系统能够处理内存密集型任务并防止崩溃或变慢。这在系统遇到高内存需求或同时运行多个资源密集型应用程序时尤为重要。这些命令的目的是为管理员提供必要的工具来控制和监控交换空间。它们使管理员能够配置和激活交换设备或文件,从而精细调整系统的内存管理设置。此外,它们提供内存使用情况的洞察,允许管理员监控交换空间的使用情况,并做出关于内存分配和优化的明智决策。由于它们在确保高效内存使用和系统稳定性方面的作用,Linux 系统管理员高度重视这些命令。通过使用这些命令,管理员可以根据系统的需求主动管理和分配内存资源,从而提高系统性能,减少内存相关问题,并增强整体可靠性。
通过这些命令,系统管理员可以有效管理交换空间并优化内存使用。它们的重要性在于能够增强系统稳定性、防止内存耗尽,并允许高效处理内存密集型任务。
本章将涵盖以下主要主题:
-
swapon 命令
-
free 命令
swapon 命令
swapon 命令是 Linux 中一个至关重要的工具,它允许系统管理员激活和配置交换设备或文件。交换空间作为物理内存(RAM)的扩展,为系统提供额外的虚拟内存。它位于磁盘上,通常以专用分区或交换文件的形式存在。操作系统将这个磁盘空间作为物理 RAM 的扩展,允许在 RAM 和交换空间之间根据需要移动数据,以高效管理系统内存。swapon 命令在高效管理内存资源和优化系统性能方面起着重要作用。swapon 命令至关重要的一个原因是它能够处理系统物理内存不足以应对工作负载的情况。通过使用 swapon 命令激活交换设备或文件,管理员可以有效地增加可用内存资源,使系统能够处理内存密集型任务,而不会遇到内存不足或性能下降的问题。这在物理内存有限或运行资源密集型应用程序的环境中尤为重要。
由于其多功能性和灵活性,这个命令在 Linux 系统管理员中被广泛使用。它使管理员能够根据具体需求配置交换设备或文件。这包括指定交换空间的位置和大小,以及为多个交换设备定义交换优先级。swapon 命令使管理员能够微调系统的内存管理设置,确保高效利用可用资源。swapon 命令的主要目的是启用高效的内存管理并优化系统性能。通过激活交换设备或文件,该命令扩展了系统的虚拟内存,使其能够处理超出物理 RAM 容量的内存需求。这有助于防止与内存相关的问题,如 swapon 命令是维护系统稳定性并确保系统平稳运行的关键工具,尤其是在内存需求波动或超过物理内存限制的环境中。让我们探索一些示例并利用它们的实际应用:
swapon命令提供了一种获取有关活动交换设备的全面详细信息的方式,提供有价值的信息,如设备路径、类型、大小和优先级。此功能允许系统管理员了解当前启用的交换设备及其相关属性。通过执行swapon命令,用户可以检索有关活动交换配置的详细摘要,便于高效监控和管理交换资源:

图 8.1 – 执行 swapon 命令以获取活动交换设备的详细信息
在此示例中,输出显示以下列:
-
NAME:该列指示交换设备的名称或标识符。在此示例中,显示为/dev/dm-1,表示在/dev/dm-1设备上的交换分区。 -
TYPE:该列指示交换设备的类型。这里显示设备是partition类型,表示它是一个专门用于交换空间的分区。 -
SIZE:该列显示交换设备的大小。在示例中,大小为3G,表示交换分区的容量为 3 GB。 -
USED:该列表示当前正在使用的交换空间量。在输出中,它显示为0B,表示当前没有使用任何交换空间。 -
PRIO:该列表示分配给交换设备的优先级。较高的优先级值表示更倾向于使用该交换设备。在此示例中,优先级为-2,意味着该交换设备的优先级较低。 -
free命令用于显示系统的内存使用情况,包括总物理内存(RAM)、已用内存、空闲内存和交换空间。在接下来的内存使用监控主题中,我们将详细介绍free命令,并解释如何解读其输出,以评估系统的内存状况:

图 8.2 – 显示内存使用情况的信息
free -h | grep 'Mem|buffers/cache'命令的输出提供了系统内存使用情况的信息。以Mem:开头的行显示系统物理内存(RAM)的详细信息。在这个例子中,它显示了总物理内存为8.0Gi(GB)。下一列显示已使用的内存量,为1.5Gi。接下来的列表示为缓冲区和缓存分配的内存量,为5.3Gi。随后的列提供了其他内存指标的信息,比如为内核用途使用的内存量(21Mi)和可用内存(1.2Gi和6.3Gi)。
- 示例 3:检查可用交换空间:

图 8.3 – 检查可用交换空间
swapon --summary | tail -n +2 | awk '{sum += $3} END {print sum/1024 " MB"}'命令的输出提供了以 MB 为单位的总交换空间大小。
让我们一步步解析该命令:
-
swapon --summary显示当前活动交换设备及其相应大小的摘要。 -
tail -n +2过滤输出并跳过第一行(即标题行),仅显示包含交换设备信息的后续行。 -
awk '{sum += $3} END {print sum/1024 " MB"}'使用awk命令计算第三列的总和(该列表示每个交换设备的大小),并将结果存储在sum变量中。END块在处理完所有行后执行,它将总和除以 1,024,以将其从 KB 转换为 MB,并显示单位MB。
在此示例中,3072 MB 的输出表示交换空间的总大小为 3,072 MB。此信息对于监控和管理系统中可用的交换空间非常有用。
通过结合这些命令,您可以全面了解 Linux 系统中 RAM 的可用内存和交换空间的情况。此外,swapon 命令在配置和启用特定文件或设备作为交换空间方面发挥着至关重要的作用,当系统需要时,可以扩展虚拟内存容量。这有助于实现高效的内存管理,并确保系统能够处理超过物理内存容量的任务。总的来说,swapon 命令对系统管理员来说具有重要意义。它的主要功能是激活和配置交换设备或文件,从而为系统增加额外的虚拟内存。这个功能对于有效管理内存资源、避免内存耗尽以及提高整体系统性能至关重要。swapon 命令提供了多种选项和设置,允许管理员微调内存管理参数,最大化利用可用资源。因此,它已成为 Linux 系统管理员工具箱中不可或缺的工具,帮助他们优化内存使用并保持系统良好运行。
free 命令
free 命令是一个强大的工具,用于 Linux 系统中提供关于系统内存使用情况的信息。它在监控和管理内存资源中起着至关重要的作用,使系统管理员能够优化系统性能,并确保有效利用可用内存。该命令显示各种度量指标,包括总内存、已用内存、空闲内存以及为缓冲区和缓存分配的内存。通过分析 free 命令的输出,管理员可以评估系统的内存状态,识别潜在的内存问题,并做出关于内存分配和优化的明智决策。free 命令的重要性在于它能够提供内存使用的实时信息。内存是任何系统中的关键资源,监控其使用情况对维持系统的稳定性和性能至关重要。free 命令提供了一个全面的内存利用概况,使管理员能够识别占用大量内存的进程,检测内存泄漏,并采取适当的措施缓解内存相关问题。它还可以让管理员评估内存密集型任务对系统整体性能的影响,并进行必要的调整以优化资源分配。
free 命令被 Linux 系统管理员广泛用于各种目的。它有助于排查与内存相关的问题,例如识别内存使用过高或可用内存不足。管理员可以使用该命令确定系统是否内存不足,并采取适当措施缓解问题,例如通过终止不必要的进程释放内存,或优化关键应用程序的内存分配。此外,free 命令还可以用于容量规划,管理员可以收集内存使用趋势的数据,以判断是否需要增加额外的内存资源来应对未来的需求。它是监控系统性能的有力工具,确保内存的最佳利用,并保持一个稳定高效的 Linux 环境。在我们之前的讨论中,我们探讨了 free 命令的功能。现在,让我们通过研究该命令的其他标志和选项,进一步了解它:
- 检查内存使用情况:

图 8.4 – 使用 free 命令检查内存使用情况
这将以人类可读的格式显示内存使用情况,展示总内存、已用内存和可用内存。
- 检查连续模式下的内存使用情况:

图 8.5 – 使用 free 命令检查连续模式下的内存使用情况
-s 标志指定了更新显示的内存信息的时间间隔(单位:秒)。在这个示例中,命令会每 5 秒刷新一次内存使用情况,提供实时更新。
总的来说,free 命令提供实时的内存使用信息,并帮助排查与内存相关的问题。这使得它成为内存管理的一个重要组成部分。通过利用 free 命令提供的洞察,管理员可以做出明智的决策,提升系统性能,并确保 Linux 系统中的资源分配高效。
总结
本章深入探讨了 Linux SWAP 命令,它们在 Linux 系统中的内存管理和性能优化中至关重要。本章重点介绍了两个关键命令:swapon 和 free。swapon 命令使系统管理员能够激活和配置交换设备或文件,从而为系统增加额外的内存资源。最后,free 命令提供实时的内存使用信息,帮助识别与内存相关的问题,并协助容量规划。
在下一章中,我们将探索一系列必备工具,用于监控系统性能、排查问题以及调试 Linux 环境中的问题。这些命令提供了关于系统各个方面的宝贵信息,帮助管理员高效识别和解决问题。通过掌握这些命令,系统管理员可以维持 Linux 系统的稳定性、可靠性和性能。
第九章:Linux 监控与调试命令
Linux 监控与调试命令是 Linux 系统管理员在监控系统性能、故障排除和调试 Linux 环境中的问题时广泛使用的一组重要工具。这些命令提供了实时的系统各个组件和进程的洞察,帮助管理员及时识别并解决潜在的瓶颈、错误或性能问题。这些命令的重要性在于它们能够确保系统的稳定性,优化资源利用,并提升整体的系统性能。通过利用监控与调试命令,管理员可以主动管理系统健康,减少风险,并保持一个可靠高效的 Linux 环境。这些命令的主要目标是为系统管理员提供必备的工具,以有效监控和诊断 Linux 系统的状态。它们还可以提供关键的系统指标,如 CPU 使用率、内存利用率、磁盘 I/O、网络活动和进程信息等宝贵的洞察。通过密切监控这些指标,管理员可以主动识别任何异常行为,跟踪系统性能趋势,并在问题扩大之前发现潜在问题。此外,调试命令提供了强大的能力,用于调查和解决系统错误、软件漏洞和兼容性问题。它们使管理员能够跟踪程序执行过程,捕获错误日志,分析系统日志,并执行故障排除步骤,找出问题的根本原因并采取适当的解决措施。
这些命令是系统管理员最常用的工具之一,原因有几个。首先,这些命令为管理员提供了实时和准确的系统性能与行为数据,使他们能够做出明智的决策并采取主动措施以优化系统资源。其次,这些命令提供了广泛的功能,允许管理员根据需求监控和分析特定的组件或进程。这种灵活性使得这些命令可以适应各种使用场景。除此之外,这些命令还通过提供详细的信息和诊断能力,促进了高效的故障排除和调试过程。这帮助管理员节省了识别和解决问题的时间和精力,从而提高了系统的稳定性并减少了停机时间。
在本章中,我们将介绍以下主要内容:
-
top、ps、pstree、strace、watch、smartctl 和 uptime 命令
-
lsof、lsmod、last reboot、last、w 和 vmstat 命令
-
kill 命令
-
pkill 命令
随着 Linux 的流行,它成为了服务器和企业环境中一个重要的选择,强大的监控和调试工具的需求也变得显而易见。Linux 社区认识到拥有全面工具的重要性,这些工具可以提供系统性能的深入分析,帮助故障排除,并实现高效的调试。随着时间的推移,开发了众多命令行工具、软件包和框架来满足这些需求。这些工具旨在为管理员提供实时监控能力、详细的系统信息和先进的调试功能。Linux 监控和调试命令的不断演变是由现代系统的日益复杂性、对最佳性能的需求以及快速识别和解决问题的需求驱动的。今天,Linux 管理员可以利用大量强大的工具来有效地监控和调试系统,确保 Linux 环境的稳定性、可靠性和性能。
top 命令
top 命令是一个强大的 Linux 工具,用于实时监控系统进程和资源使用情况。它是系统管理员用来深入了解 Linux 系统性能和健康状况的首选工具。top 命令的主要目的是展示系统进程、CPU 使用率、内存利用情况、负载平均值以及其他关键系统统计信息的动态交互式概览。通过持续更新这些信息,管理员可以快速识别占用资源过多的进程、瓶颈或可能影响系统性能的异常情况。top 命令是 Linux 监控的重要组成部分,提供了系统活动的全面视图,并促进了高效的故障排除。
top 命令被系统管理员广泛使用的一个关键原因是其多功能性。它以紧凑且易于理解的格式提供丰富的信息,使其成为监控系统健康状况的宝贵工具。管理员可以使用 top 命令观察实时的 CPU 使用情况、内存分配和进程活动。这使他们能够检测潜在的性能问题,识别消耗过多资源的进程,并采取适当的措施来优化系统性能。此外,top 命令还提供系统负载平均值的信息,指示整体系统工作负载,帮助管理员判断系统是否处于高负载状态。top 命令的重要性不仅仅在于监控系统资源。它还作为一种诊断工具,用于排查系统问题。管理员可以使用 top 命令调查特定进程的行为,识别潜在瓶颈,并分析资源消耗模式。通过了解系统资源的分配和利用情况,管理员可以做出明智的决策,以优化系统性能并解决问题。top 命令还支持交互式功能,允许管理员动态调整显示,按各种标准对进程进行排序,并向单个进程发送信号,以进行进一步分析或控制。这种灵活性和控制力使得 top 命令成为 Linux 系统管理员的必备工具。让我们深入探讨如何在 CentOS 终端中使用 top 命令:
top命令提供了有关系统统计信息的实时洞察,包括 CPU 使用率、内存利用率和系统负载。这些信息会动态更新,提供系统性能和资源分配的全面概述:

图 9.1 – 查看整体系统统计信息
top命令还提供了根据 CPU 使用率对显示的进程列表进行排序的功能。可以在下图中看到这一点:

图 9.2 – 根据 CPU 使用率排序进程
此功能使您能够快速识别消耗最多 CPU 资源的进程,因为它会在输出的顶部列出。这样的功能为优先处理和监控 CPU 密集型进程提供了便捷的方法。这反过来使系统管理员更容易识别潜在的性能瓶颈,并采取适当的措施来优化系统资源。
-o %MEM选项用于监控内存使用情况,如下图所示:

图 9.3 – 监控内存使用的命令
结果如下所示:

图 9.4 – 监控内存使用情况
top 命令将按内存使用情况对进程进行排序,显示进程列表,允许您监控哪些进程占用了最多的内存。
username为我们要过滤的实际用户名:

图 9.5 – 按用户过滤进程的命令
结果如下:

图 9.6 – 使用 top 按用户过滤进程
top 命令过滤显示的进程,仅显示由指定用户名拥有的进程。
总体而言,top 命令是一个多功能且重要的工具,用于在 Linux 环境中监控系统进程和资源使用情况。它对系统性能的实时洞察、互动功能和诊断能力,使其成为系统管理员的宝贵资产。通过使用 top 命令,系统管理员可以有效地监控系统健康状况,识别资源密集型进程,排除故障,并优化系统性能。它在 Linux 系统管理员中被广泛使用,证明了其在维持 Linux 系统稳定性、可靠性和最佳功能方面的重要性和有效性。
ps 命令
ps 命令是 Linux 中的一个强大工具,用于提供关于系统上运行的进程的信息。它的优势在于能够实时查看系统中运行的进程。它是监控系统健康状况和效率的宝贵工具,允许管理员识别任何可能影响系统性能的不正常或资源密集型进程。
ps 命令的主要用途是进程监控和管理。管理员可以使用它查看系统上活动进程的快照,包括它们的状态、资源使用情况及与其他进程的关系。这些信息对于排除系统故障、识别潜在瓶颈和优化系统性能至关重要。
例如,ps 命令可以用于以下操作:
ps命令显示系统中所有正在运行的进程列表。它提供每个进程的信息,包括进程 ID(PID)、与进程关联的终端、从启动以来的 CPU 和内存使用情况,以及启动该进程的命令:

图 9.7 – 使用 ps 命令查看所有运行中的进程
- 使用
-e选项的ps命令会显示特定用户拥有的进程列表,其中username替换为实际的用户名。它对于管理员提供特定用户进程的概览非常有用:

图 9.8 – 查看由特定用户拥有的进程
总之,ps 命令是 Linux 系统管理员的基石工具,提供有关运行进程的重要信息,并促进进程管理和故障排除。它提供的实时进程状态、资源利用率和进程关系信息,使管理员能够确保系统的稳定性、提高性能并有效分配系统资源。凭借其多功能性和广泛的应用范围,ps 命令仍然是 Linux 监控和管理工具包中不可或缺的一部分。
pstree 命令
pstree 命令是一个 Linux 工具,用于以树状结构显示系统中正在运行的进程。它提供了一个进程的可视化和层级化视图,显示了进程之间的父子关系。当试图理解进程结构以及不同进程如何相互关联时,这个命令特别有用。通过以树状格式显示进程,管理员可以快速识别父进程(init 或 system)及其子进程,从而帮助他们把握整体的进程层级。这个信息对于系统调试、性能分析和故障排除至关重要。pstree 命令还帮助进程管理,因为它允许管理员可视化复杂的进程结构及其依赖关系,从而更容易识别潜在问题并优化系统性能。让我们仔细看看它的使用方法:
pstree命令:

图 9.9 – 使用 pstree 命令查看进程树
- 在终端中运行
pstree -p命令时,它将显示系统中所有运行进程的层级表示,类似于标准的pstree输出,但每个进程的 PID 会显示在其名称旁边。PID 是操作系统分配给每个进程的唯一 ID:

图 9.10 – 使用 pstree 查看 PID
pstree -p 命令在故障排除或调查系统中的进程时特别有用。它允许您快速识别进程之间的父子关系及其对应的 PID。这有助于理解系统中运行的进程结构,并帮助您识别可能导致问题或消耗过多资源的特定进程。
strace 命令
strace命令是一个强大的 Linux 工具,用于跟踪和调试进程所做的系统调用。它在进程运行时拦截并记录进程所发出的系统调用,提供有关进程与 Linux 内核之间交互的详细信息。这种级别的可见性对于诊断和解决与系统调用、应用行为和软件错误相关的问题具有无价的价值。通过分析strace的输出,管理员可以识别文件访问问题、库依赖关系、权限错误或资源冲突等问题。它特别适用于调试复杂的应用程序、排查崩溃问题和确保程序正确执行。strace命令广泛被系统管理员、开发人员和支持团队用作调查底层系统交互、理解各种软件和性能问题根本原因的基本工具。请注意,使用strace跟踪具有提升权限或系统级别访问的进程时,需要sudo权限。pstree和strace命令是 Linux 管理员工具箱中的两个必备工具。它们提供有关进程层次结构和系统交互的宝贵见解,帮助管理员了解系统行为、诊断问题并优化性能。pstree有助于清晰地可视化进程关系,使管理员能够理解复杂的进程结构并识别可能的进程瓶颈。另一方面,strace提供了对系统调用的深入跟踪,使管理员能够监视进程与内核之间的交互,从而有助于调试和识别软件应用中的问题。这些命令的重要性体现在它们能够简化故障排除过程、增强系统稳定性和提高整体系统性能,使其成为 Linux 系统管理员不可或缺的工具。我们将探索每个命令的示例:
-
strace命令将仅跟踪ls命令发出的打开和读取系统调用 -
过滤系统调用可以专注于特定操作,减少
strace生成的输出量 -
分析过滤后的输出,以深入了解
ls命令如何通过打开和读取文件与文件进行交互:

图 9.11 – 使用 strace 过滤系统调用
总结来说,pstree 和 strace 命令是 Linux 系统管理员不可或缺的工具,每个工具在系统监控和调试中都有独特的用途。pstree 命令提供了一个清晰的、层次化的运行进程视图,简化了进程关系和依赖性的理解。这种可视化表现有助于故障排除、性能分析和进程管理任务,从而提高系统稳定性和性能。另一方面,strace 命令擅长追踪系统调用,并提供关于进程行为、软件错误和低级系统交互的详细信息。这种强大的可见性对诊断复杂问题和识别软件问题的根本原因至关重要。系统管理员和开发人员依赖 strace 来排查崩溃、检测权限错误、解决库依赖问题,并确保程序正确执行。
watch 命令
watch 命令是 Linux 中一个强大的实用工具,用于在定义的时间间隔内反复执行指定的命令,并在终端显示其输出。它特别适用于实时监控和观察系统数据随时间变化的情况。该命令接受一个命令行参数,并定期刷新终端屏幕以显示给定命令的更新输出。这种连续刷新的方式提供了数据的动态视图,使系统管理员更容易跟踪系统指标、分析进程或观察某些命令的行为。watch 命令对于需要频繁更新的监控任务非常有用,例如检查系统资源使用情况、日志文件更新或网络活动。它简化了获取实时信息的过程,使管理员能够迅速响应任何变化或异常,是 Linux 系统管理员工具包中不可或缺的工具。
我们可以使用 watch 命令结合 ifconfig 命令来实时监控网络流量:

图 9.12 – 实时监控网络流量的命令
结果如下:

图 9.13 – 结合使用 watch 和 ifconfig 命令
现在让我们来看看另一个命令——smartctl 命令。
smartctl 命令
smartctl 命令是 Linux 系统管理员管理硬盘和存储设备的重要工具。它是 smartctl 命令的一部分,管理员可以主动监控存储设备的状态,检测即将发生故障的迹象,并采取必要的措施来防止数据丢失和系统停机。这些宝贵的信息使系统管理员能够做出明智的决策,进行存储维护、升级规划和更换策略,确保数据完整性和系统稳定性。
我们可以使用 smartctl 命令获取存储设备的健康状况和状态:

图 9.14 – 使用 smartctl 获取存储设备的健康状态
uptime 命令
uptime 命令是 Linux 系统管理员用来快速检查系统当前运行时间和负载平均值的简单但重要的工具。执行时,该命令会显示当前时间、系统自上次启动以来的运行时间、当前登录的用户数量,以及过去 1、5 和 15 分钟的负载平均值。负载平均值代表指定时间间隔内,系统运行队列中的进程平均数量。uptime 命令对于评估系统性能、资源利用率和系统响应能力至关重要。通过定期监控运行时间和负载平均值,管理员可以识别系统活动高峰期和潜在的瓶颈,从而做出关于系统优化、容量规划和资源分配的明智决策。此工具在排除性能问题时尤其有用,因为它提供了系统健康状况的快速快照,并帮助管理员检测异常或系统负载过重的时段。
通过进一步探讨提供的上述命令示例,我们将深入研究如何高效地被系统管理员使用:
- 监控 CPU 使用率:

图 9.15 – 监控 CPU 使用率的命令
结果如下:

图 9.16 – 使用 uptime 监控 CPU 使用率
总结来说,watch、smartctl 和 uptime 命令是 Linux 系统管理员不可或缺的工具,提供了实时监控、存储设备管理和系统性能评估的宝贵功能。
lsof 命令
Linux 中的 lsof 命令是用于执行各种管理任务的工具,例如终止占用关键文件锁的进程或识别与特定网络连接相关联的进程。
lsof 命令的主要用途在于其多功能性和灵活性。它可以用来检查各种类型的资源,如常规文件、目录、网络套接字以及字符/块设备。这使它成为调查网络相关问题、分析磁盘使用情况、管理挂载的文件系统以及检查潜在资源泄漏的必备工具。总的来说,lsof 命令为 Linux 系统管理员提供了丰富的文件和进程交互信息,有助于高效的系统管理和故障排除。
我们将使用以下命令列出系统中所有打开的文件:

图 9.17 – 使用 lsof 列出系统中所有打开的文件
以下是命令的分解:
-
lsof:执行的命令是lsof。它提供了关于当前由系统打开并使用的文件和进程的信息。 -
>:这是 Linux 中的重定向操作符。它用于将命令的输出重定向到文件,而不是显示在终端上。 -
file.txt:这是lsof命令输出将被保存的文件名。你可以选择任何你想要的文件名,但file.txt只是一个示例。
lsmod 命令
lsmod 命令用于显示当前系统上加载的内核模块。内核模块是可以动态加载或卸载到 Linux 内核中的小段代码,它们为操作系统添加或移除特定功能。lsmod 命令提供了一个简洁且有组织的视图,显示了内核模块的名称、大小以及它们的引用或依赖关系的数量。lsmod 命令的意义在于其能够检查内核的运行时配置。这个命令为系统管理员提供了确认当前加载并处于活动状态的内核模块的能力。这些信息在故障排除硬件相关问题时非常重要,因为内核模块在管理设备驱动程序和其他关键功能中起着至关重要的作用。
我们将使用以下命令查看当前加载的内核模块:

图 9.18 – 使用 lsmod 查看当前加载的内核模块
下面是输出的解释:
-
表头行提供了输出中各列的名称。三个主要列是
Module、Size和Used by。 -
Module列列出了加载的内核模块的名称,Size和Used by列分别表示每个模块在内存中的大小以及使用该模块的内核组件的数量。 -
输出显示了当前加载并由系统使用的几个内核模块的信息。
-
每一行对应一个特定的内核模块,列提供了关于该模块的详细信息。
例如,我们来看第一行:
-
nls_utf8模块已加载,并占用 16,384 字节内存 -
有一个内核组件使用了
nls_utf8模块
同样,其他行提供了有关当前加载的不同模块及其各自大小和使用情况的信息。
-
最后一次重启命令
Linux 中的 last reboot 命令是一个简单但至关重要的工具,用于提供系统重启历史的信息。它显示了先前系统重启的时间戳,以及自上次重启以来的时间。这些信息对于系统管理员跟踪系统的可用性和正常运行时间非常有帮助。通过定期检查最后的重启时间戳,管理员可以快速识别系统是否经历了任何意外的关机或重启。此信息对于诊断可能导致系统不稳定的硬件或软件问题至关重要。
last reboot 命令的主要用途是进行历史分析和跟踪系统的可用性。系统管理员可以利用这些信息来计算系统的平均故障间隔时间(MTBF)和平均修复时间(MTTR),这些是评估系统可靠性的关键指标。
要显示系统的重启历史,我们使用以下命令:

图 9.19 – 使用 last reboot 命令显示系统的重启历史
last 命令
last 命令是一个多功能且强大的工具,Linux 系统管理员用它来查看系统上用户登录活动的历史记录。它显示了先前登录会话的列表,包括日期、时间、持续时长以及登录发生的远程主机。这些信息对于监控用户访问系统、识别潜在的安全漏洞以及调查未授权的访问尝试至关重要。last 命令允许管理员跟踪用户活动、检测异常的登录模式,并确保系统的安全性和完整性。此外,它还通过提供全面的用户登录事件日志,方便了审计和合规性工作,使其成为系统管理员工具包中的关键组成部分。
以下示例显示了最后登录的用户和系统关机/重启时间:

图 9.20 – 查看最后登录用户和系统关机/重启时间
w 命令
w 命令是一个有价值的工具,提供关于登录用户及其在系统上的活动的实时信息。执行时,w 命令显示当前登录用户的列表,并提供他们的用户名、终端、登录时间、空闲时间和当前进程等详细信息。此命令使系统管理员能够监控用户会话、检查系统负载,并评估资源利用情况。w 命令特别有助于管理系统资源,确保用户之间的资源公平分配。它帮助管理员识别可能消耗过多资源或导致系统性能问题的用户。通过获取这些实时数据,管理员可以采取主动措施来优化资源分配,提高系统效率,并确保顺畅和响应快速的用户体验。
以下示例显示当前登录用户及其活动的信息:

图 9.21 – 使用 w 命令显示当前登录用户及其活动的信息
vmstat 命令
vmstat 命令是一个强大的工具,用于监控系统性能和分析资源使用情况。执行时,vmstat 命令提供有关各种系统统计信息的详细报告,包括 CPU 使用率、内存使用、虚拟内存、磁盘 I/O 和系统进程。这个全面的概览可以帮助系统管理员识别性能瓶颈、检测潜在问题,并做出关于系统优化和资源分配的明智决策。vmstat 命令对于性能调优、容量规划和排除系统减速或资源约束特别有价值。它提供了系统健康状况和性能的宝贵见解,使管理员能够主动解决任何新出现的问题,确保 Linux 环境的平稳运行。
以下示例用于实时监控系统内存、处理器和 I/O 统计信息:

图 9.22 – 使用 vmstat 监控系统内存和进程
此命令用于显示虚拟内存统计信息、系统进程和 CPU 利用率。
以下是命令的分解:
-
procs:此项显示有关进程和进程状态的信息。r列表示处于running状态的进程数,而b列表示处于uninterruptible sleep或blocked状态的进程数。 -
memory:此部分提供有关内存使用情况的详细信息。swpd列显示已交换到磁盘的虚拟内存使用量(以 KB 为单位)。free列显示可供进程使用的空闲内存量(以 KB 为单位)。buff列显示作为缓冲区缓存由内核使用的内存量(以 KB 为单位)。cache列显示作为页缓存由内核使用的内存量(以 KB 为单位)。 -
swap:显示关于交换空间使用情况的信息。si列表示每秒从磁盘交换进内存的内存量(以 KB 为单位),so列表示每秒交换到磁盘的内存量(以 KB 为单位)。 -
io:提供有关 I/O 操作的信息。bi列显示每秒从块设备(如硬盘)接收的块数,bo列显示每秒发送到块设备的块数。 -
system:此部分显示与系统相关的统计信息。in列表示每秒的中断次数,cs列表示每秒的上下文切换次数。 -
cpu:此部分提供 CPU 利用率统计信息。us列表示用户级进程所占的 CPU 时间百分比。sy列表示系统级进程所占的 CPU 时间百分比。id列表示空闲 CPU 时间的百分比。wa列表示等待 I/O 操作的 CPU 时间百分比。st列表示从虚拟 机(VM)中被窃取的 CPU 时间百分比。
kill 命令
kill 命令是 Linux 中一个基础且强大的工具,用于终止或向正在运行的进程发送信号。在许多情况下,它需要超级用户(sudo)权限才能终止属于其他用户或对系统操作至关重要的进程。它的主要作用是根据进程的 PID 优雅地停止或强制终止进程。kill 命令允许系统管理员管理和控制进程的执行,确保系统平稳运行和资源管理。kill 命令最常发送的信号之一是 SIGTERM(信号 15),它礼貌地请求进程终止,并给进程一个执行清理任务的机会。除此之外,kill 命令还可以发送其他信号,如 SIGKILL(信号 9),它强制终止进程,而不允许其执行任何清理操作。这在进程无响应或导致系统不稳定时非常有用。kill 命令对处理无响应或问题进程至关重要,能够防止资源耗尽并保持系统稳定。此外,kill 命令在进程管理中发挥着重要作用,使管理员能够优先处理某些进程。通过发送不同的信号,管理员可以改变运行进程的行为。例如,发送 SIGSTOP 信号可以暂停一个进程,而发送 SIGCONT 信号则可以恢复该进程。这一功能对于暂停和恢复进程或根据特定条件控制其执行非常有用。kill 命令是 Linux 系统管理员在处理进程相关问题、管理系统资源和确保系统高效可靠运行时不可或缺的工具。
此外,kill 命令在进程协调中也起着重要作用,管理员可以通过 kill 命令促进进程间的通信与协调,从而提高系统的整体性能和功能性。kill 命令还常用于 Shell 脚本和自动化脚本中来管理进程,是自动化系统任务和维护的重要工具。
使用 kill 命令终止特定进程的步骤如下:
-
使用
ps命令查找目标进程的 PID。 -
使用
kill命令加上 PID 来终止进程:

图 9.23 – 使用 kill 命令终止特定进程
- 我们使用
systemctl命令来验证进程,如下所示:

图 9.24 – 验证 kill 进程
pkill 命令
pkill命令是 Linux 中一个强大的工具,用于根据进程名称或其他条件终止或发送信号给进程。它的主要目的是提供一种比使用进程 ID(PID)更简便和高效的方式来终止进程。其重要性的一大原因在于,它能够简化终止多个相同名称进程的过程。这对于处理运行多个进程的应用程序尤其有用,例如 Web 服务器或数据库服务器。pkill命令确保终止所有相关进程,而无需逐一识别和输入 PID。它的易用性使得它成为系统管理员在各种场景下的宝贵工具,包括故障排除、进程管理和自动化。
我们可以使用pkill命令终止多个进程。
使用pkill命令后跟进程名称来终止所有具有相同名称的进程:

图 9.25 – 使用 pkill 命令终止多个进程
总之,Linux 监控和调试命令是 Linux 系统管理员不可或缺的工具。这些命令使管理员能够监控系统性能、排查问题,并确保 Linux 系统的稳定性和可靠性。管理员可以通过使用多种命令深入了解系统行为,识别问题并实施有效的解决方案。通过掌握这些命令,管理员能够优化系统性能、增强安全性,并提供流畅的用户体验。总体而言,Linux 监控和调试命令对于维护 Linux 环境的健康和功能至关重要。
总结
本章深入探讨了一系列关键工具,旨在帮助 Linux 系统管理员高效地监控系统性能并识别和解决潜在问题。本章涵盖了多种命令,每个命令都在帮助管理员深入了解系统的不同方面方面起着重要作用。从使用top和vmstat进行实时监控,到使用pstree分析进程关系,再到使用strace调试软件问题,本章为管理员提供了宝贵的工具,确保 Linux 系统的稳定性、可靠性和最佳性能。
此外,本章还探讨了如watch、smartctl、uptime、kill和pkill等命令,它们分别帮助执行重复命令、管理存储设备、终止进程、检查系统运行时间和负载平均值。这些监控和调试命令的组合使系统管理员能够全面了解系统健康状况、资源利用率和用户活动,帮助他们做出明智的决策,并主动解决潜在问题。
在下一章,我们将深入探讨一系列必不可少的工具,旨在促进网络管理并提升 Linux 环境中的系统性能。本章涵盖了各种命令,每个命令在配置和监控网络设置方面都有其特定的用途。从用于防火墙管理的iptables到用于网络接口配置的ifconfig和ip等命令,本章为系统管理员提供了确保网络顺畅运行和安全通信的必要工具。
第十章:Linux IPTABLES 和网络命令
Linux IPTABLES 和网络命令是 Linux 系统管理员管理和控制网络流量与安全的基本工具。IPTABLES 是一款强大的防火墙工具,允许管理员定义规则来过滤、转发和修改网络数据包。它在确保网络安全方面起着至关重要的作用,能够阻止未经授权的访问,防止恶意流量,保护敏感数据。此外,IPTABLES 还使管理员能够创建复杂的网络配置,如网络地址转换(NAT)和端口转发,以优化网络性能,并促进内外部网络之间的通信,而 Linux 中的网络命令提供了广泛的功能,帮助监控和管理网络连接、接口以及网络相关的统计数据。这些命令能够提供网络性能、带宽使用情况和活跃连接的信息,使管理员能够识别瓶颈、诊断网络问题并优化网络资源。此外,它们通过提供有关网络状态和活动的实时信息,帮助排查网络相关问题,如 DNS 解析、数据包丢失和连接问题。
Linux IPTABLES 和网络命令的重要性在于它们能够有效地保障和管理网络通信。由于基于 Linux 的系统广泛应用于各种领域,包括服务器、路由器和物联网设备,网络安全和高效流量控制的需求变得尤为重要。通过使用 IPTABLES 和网络命令,管理员可以实施定制化的网络策略和访问控制列表,确保只有授权流量被允许,同时阻止潜在威胁。这种对网络流量的精细控制为防御网络攻击提供了额外的防线,使这些命令成为 Linux 系统管理员不可或缺的工具。
本章将深入探讨以下主要内容:
-
iptables -t ACCEPT
-
iptables -t DROP
-
ifconfig、ip、route 和 netstat
-
主机名和 nslookup
-
主机
在我们继续之前,我们还必须认识到 IPTABLES 和网络命令在优化网络性能和资源利用方面的重要贡献。通过分析网络统计数据和带宽使用情况,管理员可以识别需要改进的领域,并根据网络架构和容量规划做出明智的决策。这种主动的方式确保网络资源得到高效利用,提升整体网络性能并减少停机时间。IPTABLES 和网络命令提供多功能的功能,保障网络安全,监控网络活动并优化网络性能。它们的灵活性和能够配置自定义网络策略的能力使它们在管理和维护稳定、安全的网络环境中不可或缺。由于网络安全和高效的资源管理是现代计算的关键方面,Linux 的 IPTABLES 和网络命令依然是各行业和环境中 Linux 系统管理员最广泛使用的工具之一。
iptables -t ACCEPT
在 Linux 网络与安全领域,带有-t选项和ACCEPT目标的iptables命令至关重要。iptables是 Linux 中的一款强大防火墙工具,允许管理员根据指定的条件定义进出网络数据包的规则,从而允许或拒绝访问。命令中的-t ACCEPT部分用于指定规则的目标,在此情况下是接受数据包。使用iptables与-t ACCEPT配置的重要性在于它能够对网络流量进行精细控制,允许管理员定义管理数据流向系统的规则。通过使用iptables与ACCEPT目标,管理员可以明确允许数据包通过防火墙,从而确保授权的网络通信能够被允许,同时潜在的有害或未经授权的流量被阻止。这一能力对于网络安全至关重要,它使管理员能够定义量身定制的访问规则,保护系统免受恶意攻击和未授权访问。
接下来,我们将深入探讨如何使用iptables -t ACCEPT命令的实际示例:
- 查看当前的
iptables规则以了解现有配置:

图 10.1 – 查看当前的 iptables 规则
-
允许来自指定 IP 地址(
192.168.x.xxx)的传入 SSH 连接。当你使用
iptables命令时,它会向iptables防火墙的INPUT链添加一条规则,允许来自源 IP 地址192.168.x.xxx的传入 TCP 流量通过目标端口22(这是 SSH 的默认端口)。如果规则成功添加,终端中不会显示任何确认或信息。 -
要检查
iptables防火墙中的规则并验证新规则是否已添加,可以使用以下命令:

图 10.2 – 允许来自指定 IP 的 SSH 连接
iptables -t DROP
在 Linux 中,iptables 命令是管理网络流量和执行安全策略的基础工具。它允许系统管理员为进出网络的数据包定义规则,根据指定的标准授予或拒绝访问。-t 标志与 iptables 配合使用时,指定规则所在的目标表。在安全性方面,DROP 目标尤为重要。当与 -t 结合使用时,如 iptables -t DROP,它表示匹配定义规则的入站网络数据包将被丢弃或阻止,进而有效拒绝访问。在 Linux 中,iptables 命令允许管理员管理和操作netfilter 防火墙规则,这些规则决定内核如何处理网络数据包。管理员可以通过有选择地丢弃数据包,阻止恶意或可疑流量进入网络。
对于专家来说,iptables -t DROP 提供了对网络流量的细粒度控制,使他们能够定制规则并有效地缓解复杂的安全风险。此外,通过策略性地使用 DROP 目标,管理员可以防止某些类型的攻击,如拒绝服务攻击(DoS)和分布式拒绝服务攻击(DDoS),避免其压垮系统并中断服务,或者使用此命令来阻止已知恶意活动的特定 IP 地址,限制对某些服务的访问,或保护易受攻击的端口。
DROP 操作的主要用途是根据定义的标准(如源 IP 地址、目标端口和协议类型)筛选和控制入站网络流量。通过指定规则,管理员可以确定哪些数据包应该被丢弃,从而防止它们到达预定目的地。此命令在制定网络安全策略中起着至关重要的作用,因为它允许管理员定义与组织的安全要求和合规性标准相符的规则。通过高效管理网络流量,Linux 系统管理员可以创建一个强大且安全的网络环境,保护其基础设施免受潜在威胁。接下来,让我们深入探讨如何实际运用 iptables -t DROP 命令。
要阻止来自指定 IP 地址的入站流量,请使用以下命令:

图 10.3 – 阻止入站流量
此命令将新规则添加到 iptables 的 INPUT 链中,丢弃来自 IP 地址 192.168.x.xxx 的任何入站数据包。
ifconfig, ip, route 和 netstat
ifconfig 命令,即 ifconfig 命令,仍然是网络管理和高级配置的基础命令。专家可以利用 ifconfig 手动配置网络接口,设置静态 IP 地址,启用或禁用特定接口,并修改高级网络设置。在服务器环境中,ifconfig 尤其有用,因为那里通常有多个网络接口,并且需要特定的配置。此外,ifconfig 可以与其他命令结合使用,以进行网络诊断和性能监控。虽然 ifconfig 被广泛使用,并且 Linux 管理员非常熟悉它,但值得注意的是,某些 Linux 发行版正在逐步弃用该命令,转而使用如 ip 这样的新工具。尽管如此,ifconfig 在许多 Linux 环境中仍然具有相关性和价值,提供了一种简单而有效的方式来管理网络接口。
ip, route, 和 netstat
ip、route 和 netstat 命令是 Linux 网络工具,它们共同提供了一个全面的网络配置、路由和监控功能集。这些命令对于初学者和专家来说,都能提供关于网络设置、流量路由和活动网络连接的重要信息。ip 是一个多功能的命令,取代了许多 ifconfig 的功能,提供了网络接口、路由表和隧道的高级配置选项。route 允许用户查看和修改系统的 IP 路由表,控制数据包在网络之间的转发方式。netstat 提供了网络连接、开放端口和活动网络统计信息的详细概览。需要注意的是,掌握这些命令对于理解网络设置和故障排除至关重要。ip 命令为 ifconfig 提供了更现代和功能更丰富的替代方案,提供了更广泛的网络配置和管理功能。route 帮助初学者掌握路由的概念以及数据包如何在网络中进行转发。netstat 帮助初学者识别活动的网络连接、监控端口使用情况并诊断网络问题,例如识别消耗网络资源的进程。随着初学者探索 Linux 网络,这些命令为他们提供了必要的工具,以有效地理解和配置网络设置。这些命令在网络管理和故障排除中变得不可或缺。例如,ip 命令的高级功能使专家能够设置复杂的网络配置,创建虚拟接口,管理路由表并实现 NAT。route 允许专家精细调优路由规则,优化流量流动,并高效管理多个网络接口。netstat 是专家监控网络性能、检测可疑网络活动和识别潜在安全威胁的宝贵工具。这些命令结合使用,提供了全面的网络可视化,使专家能够维护一个强大且安全的网络环境。ip、route 和 netstat 的深度和多功能性使它们成为 Linux 网络管理员不可或缺的工具,使他们能够优化网络性能、排除故障并确保网络连接的顺畅和可靠。现在我们已经了解了这些命令,让我们通过实际例子来应用它们:
- 要查看当前网络接口及其配置,运行以下命令:

图 10.4 – 查看当前网络接口
- 让我们利用
ip命令来查看网络接口:

图 10.5 – 查看当前网络接口
这将显示所有网络接口的列表,包括它们的 IP 地址、子网掩码以及其他网络配置细节。
- 要向路由和查看网络统计信息中添加静态路由,例如打开的网络连接和监听端口,请运行以下命令:

图 10.6 – 路由与查看网络统计信息
此命令通过192.168.x.x网关将路由添加到192.168.x.0/24子网。然后,下一条命令显示所有活动网络连接及其对应的端口。
netstat命令中的-tuln选项用于以数字格式显示系统上所有打开的 TCP 和 UDP 端口:
-
-t:显示 TCP 连接 -
-u:显示 UDP 连接 -
-l:显示监听端口 -
-n:显示数字地址,而不是试图解析符号化的主机、端口或用户名
ip route add命令的影响是什么?
ip route add命令用于向路由表中添加一条新路由。路由表是内核用于确定如何将数据包路由到目的地的数据库。
ip route add命令的影响是它将允许系统与192.168.x.x/24网络上的设备进行通信。
ip route add命令可以用于添加任何网络的路由,而不仅仅是本地网络。这对于配置不同网络之间的路由或通过 VPN 进行数据包路由非常有用。
主机名和 nslookup
Linux 中的hostname命令用于查看或设置系统的主机名。主机名是分配给网络中设备的唯一标识符,帮助区分其他设备。主机名对于各种网络任务至关重要,例如通过网络访问设备和在与其他设备通信时识别它。hostname命令提供了一种简单有效的方式来管理系统的主机名,是 Linux 管理员不可或缺的工具。hostname命令的重要性在于它在网络和系统标识中的作用。一个有意义的主机名有助于增强系统在网络中的可管理性和组织性,简化了管理任务,使得更容易定位和与特定设备进行通信。此外,主机名通常用于日志文件和系统监控工具中,以提供上下文并标识事件的来源,有助于故障排除和审计。对于托管多个服务的服务器,设置一个具有描述性的主机名可以帮助用户和管理员识别每台服务器的目的或功能,从而简化系统管理并减少混淆的风险。总的来说,hostname命令在维护高效的网络操作和有效的系统管理方面起着至关重要的作用。
nslookup 命令是一个强大的工具,用于将 www.example.com 等域名解析为计算机可以理解的 IP 地址(例如,192.168.x.x)。nslookup 命令提供了一种交互式查询 DNS 服务器的方法,使其成为网络管理员和开发人员不可或缺的工具。nslookup 命令的重要性在于它能够帮助排查 DNS 相关问题并验证 DNS 配置。它允许管理员验证 DNS 记录,检查域名是否解析到正确的 IP 地址,并排查 DNS 解析问题。通过使用 nslookup 命令查询特定的 DNS 服务器,管理员可以确保 DNS 信息的准确性,并诊断与 DNS 相关的问题,例如错误的 DNS 条目或配置错误的 DNS 服务器。此外,nslookup 命令还可以用来测试 DNS 服务器的响应时间,帮助管理员识别 DNS 基础设施中的潜在瓶颈并优化 DNS 性能。总的来说,nslookup 命令是管理和排查 Linux 环境中 DNS 问题的不可或缺的工具,确保网络通信和互联网连接的顺畅运行。
现在,让我们在实际示例中应用这些命令:
- 要显示系统的主机名,只需输入以下命令:

图 10.7 – 显示系统的主机名
此命令将输出您的 Linux 系统的主机名。主机名是一个唯一的名称,用于在网络上标识系统,并用于本地和远程通信。
- 要为特定域(例如,
www.example.com)执行 DNS 域名解析,可以使用nslookup或host命令。以下是一个示例:

图 10.8 – 执行 DNS 域名解析
host
host命令是一个强大的工具,主要用于 Linux 系统中的 DNS 相关任务。它的主要功能是执行 DNS 查询,将域名转换为 IP 地址,反之亦然。host命令的重要性在于它作为一个多功能工具,帮助网络管理员和开发人员解决 DNS 查询和排除域名解析问题。通过使用host命令,管理员可以验证域名是否正确映射到 IP 地址,确保互联网设备之间的正常通信。此外,host命令还提供关于 DNS 记录的信息,例如域的授权名称服务器,host命令常用于多种场景,如在域名更改后检查 DNS 传播,诊断 DNS 解析问题,以及验证域名配置。它的易用性和提供实时 DNS 信息的能力使它成为网络和系统管理领域中新手和专家的必备工具。现在,让我们通过实际示例深入了解这些命令的使用:
-
和
nslookup一样,我们也可以使用host命令执行相同的操作。这两个命令将显示与提供的域名关联的 IP 地址。DNS 负责将人类可读的域名转换为计算机可以理解的 IP 地址。这些命令可以让你检查 DNS 解析是否正常工作,并检索特定域的 IP 地址:

图 10.9 – 使用 host 命令检查 DNS 解析
总结来说,Linux IPTABLES 和网络命令在 Linux 系统管理员的工具库中扮演着至关重要的角色,提供了确保网络安全、监控网络活动和优化整体性能的必要功能。
总结
在本章中,我们探讨了 Linux 系统管理员的必备工具,这些工具为他们提供了强大的能力,以有效管理网络通信并增强网络安全。本章介绍了一系列命令,每个命令在配置网络规则和深入了解网络活动方面都有特定的作用。iptables命令,如iptables -t ACCEPT和iptables -t DROP,允许管理员自定义网络策略,允许授权流量同时阻止潜在威胁。这些命令在保护网络资源和防御网络攻击中发挥着至关重要的作用,是 Linux 系统管理员不可或缺的工具。本章还深入探讨了网络配置和分析命令,包括ifconfig、ip、route和netstat。这些命令为管理员提供了查看和管理网络接口、配置 IP 地址、检查路由表和监控网络统计信息的能力。通过使用这些命令,管理员可以优化网络性能,排查连接问题,并确保资源的高效利用。此外,本章还探讨了hostname、nslookup和host命令,它们提供有关 DNS 解析和主机名相关信息的洞见。这些命令对于验证 DNS 配置、解析域名和诊断网络连接问题非常有价值。这些网络命令的无缝集成为 Linux 系统管理员提供了必要的工具,以维护稳定、安全和高效的网络环境。
在下一章,我们将探索一组关键工具,这些工具能够实现无缝的文件传输、高效的下载以及有效的日志文件管理,适用于 Linux 环境。我们将涵盖一系列命令,每个命令在简化文件传输和确保日志文件可访问性方面都具有特定作用。从使用netcat和socat将文件复制到远程系统,到利用wget、curl、axel等工具进行高效的文件下载,本章将为系统管理员提供必备的技术,以有效地处理各种与文件相关的任务。
第十一章:文件传输、下载和管理日志文件
文件传输、下载和管理日志文件是有效管理 Linux 系统的关键方面,使系统管理员能够高效处理数据交换、获取必要的软件或内容,并保持系统活动的强大记录。这个多方面的主题涵盖了各种命令和工具,每个工具都有独特的用途,共同支持无缝的文件操作和日志管理。理解并掌握这些工具对管理员至关重要,以确保系统正常运行、解决问题并保持数据完整性。
文件传输、下载和管理日志文件命令的重要性在于它们在日常系统管理任务中的核心作用。像netcat、socat、wget、curl和axel这样的文件传输命令可以在本地系统和远程系统之间无缝地交换数据。这些工具对于共享文件、备份和配置文件非常关键,既适用于内部网络,也适用于互联网。类似地,像wget、curl和axel这样的下载命令使管理员能够高效地从远程服务器或仓库中获取文件、软件包和更新。这些命令对高效获取必要资源、确保系统保持最新和装备齐全至关重要。同样重要的是管理日志文件,这在系统分析、性能监控和故障排除中起着关键作用。日志文件是记录系统活动、错误和事件的重要信息。通过探索常见的日志文件,管理员可以深入了解系统的健康状况,发现潜在问题,并采取预防措施。这种可见性对于保持系统稳定、确保安全性以及符合监管要求至关重要。
在本章中,我们将深入探讨以下主要主题:
-
使用
netcat和socat将文件复制到远程系统 -
使用
wget和curl下载文件 -
探索常见的日志文件
掌握文件传输、下载和管理日志文件命令的目的是为了让系统管理员具备高效执行各种任务的能力。通过理解这些工具,管理员可以自信地执行文件传输、安全内容交换,并获取必要的数据。他们还可以分析和解读日志文件,获取有关系统性能的宝贵信息,并诊断潜在问题。这些命令提供了执行各种文件操作和维护有序日志管理系统所需的灵活性和控制力。因此,文件传输、下载和管理日志文件命令对 Linux 系统管理员来说仍然至关重要,广泛应用于帮助他们高效管理系统、提供最佳性能和安全性。
使用 netcat 和 socat 将文件复制到远程系统
使用netcat和socat命令将文件复制到远程系统是 Linux 环境中文件传输和系统管理的一个关键方面。netcat和socat都是功能强大的网络工具,能够提供在网络中系统之间传输数据的强大能力。这些命令提供了一种简单高效的方式,可以安全地将文件、目录或数据流从一个主机传输到另一个主机,因此它们是 Linux 系统管理员不可或缺的工具。它们在网络层操作,允许通过 TCP 或 UDP 连接传输数据,非常适合跨网络传输大文件或备份。与传统的文件传输方法不同,netcat和socat提供了一种更加轻量和灵活的方法。FTP 和 SCP 是已知的网络文件传输方法,但它们也有一些局限性。例如,FTP 需要专用的 FTP 服务器设置,这可能会消耗大量资源,并且在临时网络环境中灵活性较差。SCP 虽然安全,但依赖 SSH,并且在某些情况下可能无法使用或不切实际。而netcat和socat则是轻量级且多功能的工具,允许直接的网络通信,非常适合快速且临时的文件传输。它们不需要专用服务器或复杂的配置,使它们在各种网络管理和故障排除任务中都非常有价值。此外,它们还可以在数据复制、系统备份、远程管理甚至加密通信隧道等多种场景中使用。这些命令为管理员提供了更大的数据传输过程控制,使得文件传输任务更易于定制和自动化。
使用netcat和socat将文件复制到远程系统是非常实用且高效的。管理员可以通过将内容通过netcat或socat管道传输到目标系统,快速完成文件传输。这个过程相对简单,仅涉及一行命令,减少了复杂设置或额外软件安装的需求。此外,netcat和socat支持多种选项,允许管理员指定数据流、处理多个连接并控制传输速度,提供了更大的灵活性和对文件传输过程的控制。总的来说,netcat和socat命令为将文件复制到远程系统提供了高效可靠的解决方案,简化了文件传输任务,提升了系统管理的整体效率。接下来,我们将深入探讨这些命令如何在系统管理员的实际应用中有效使用:
-
使用
netcat进行文件传输(CentOS 机器):-
第一个命令
ls -l /bin/wget列出位于/bin目录中的wget文件的详细信息。输出包含权限、所有者、组、大小、修改日期以及文件名等属性。在此,wget文件具有-rwxr-xr-x权限,表示文件所有者具有读、写和执行权限,其他用户则仅具有执行权限。 -
第二个命令
nc -nv 192.168.x.xxx 4444 < wget使用nc(即netcat)命令进行网络通信。在此,用户尝试将wget文件的内容发送到 IP 地址为192.168.x.xxx的远程机器上的4444端口。<符号用于输入重定向,表示将wget文件的内容作为输入提供给nc命令。 -
-n标志确保不会对 IP 地址192.168.x.xxx进行 DNS 解析,-v提供关于连接过程的详细输出。 -
后续行显示了
netcat命令的输出。首先,它显示了正在使用的 Ncat 版本(Ncat 是netcat的现代重实现)。然后,它报告已成功连接到指定的 IP 地址和端口:
-

图 11.1 – 使用 netcat 进行文件传输
-
远程机器:
-
执行的第一个命令是
nc -nlvp 4444 > wget。该命令使用nc(即netcat)工具监听端口4444上的网络连接。传入连接的输出被重定向到当前目录下名为wget的文件中。>符号用于输出重定向。输出结果表明系统当前正在监听端口4444。请注意,使用nc发送文件时,终端中不会显示进度条。 -
执行的第二个命令是
ls -l wget。该命令列出当前目录中wget文件的详细信息。输出包括权限、所有者、组、大小、修改日期以及文件名等属性。 -
执行的第三个命令是
sudo chmod +x wget。该命令使用chmod修改wget文件的权限,+x参数为文件添加可执行权限。 -
最终执行的命令是
wget --help。该命令旨在验证文件是否已成功传输,输出结果表明该命令执行成功:
-

图 11.2 – 使用 nc 接收传入文件
-
使用
socat进行文件传输(远程机器):在远程机器上执行了
socat TCP4-LISTEN:4444,fork file:shadow.txt命令。该命令在4444端口设置了一个 TCP 监听器。当有连接到此端口时,socat会读取本地shadow.txt文件的内容并将其发送到连接的客户端。fork选项允许socat独立处理多个传入的连接。在此示例中,shadow.txt文件包含文本file file,如下所示:

图 11.3 – 使用 socat 在远程机器上发送文件
-
CentOS 机器:
在 CentOS 机器上执行了
socat TCP4:192.168.x.xxx:4444 file:shadow.txt, create命令。该命令发起一个 TCP 连接到 IP 地址为192.168.x.xxx、端口为4444的远程机器。一旦连接成功,socat会读取本地shadow.txt文件的内容并将其发送到远程机器。create选项指示socat在远程机器上创建shadow.txt文件(如果该文件尚不存在)。传输完成后,本地的shadow.txt文件将会被创建或用接收到的数据覆盖。ls -l shadow.txt命令确认文件的创建,cat shadow.txt命令则显示其内容,即file file:

图 11.4 – 接收并验证传输的文件
尽管 Netcat 和 Socat 都用于网络任务和数据传输,但 Netcat 是一个更为简单的工具,主要用于基本的网络任务,而 Socat 提供了更多的高级功能和选项,适用于更广泛的网络场景,包括复杂的数据处理、加密和代理。
使用 wget 和 curl 下载文件
下载文件是系统管理中的一项基本任务,wget和curl等工具在简化和优化此过程方面发挥着关键作用。这些命令旨在从远程服务器、仓库或 URL 中获取文件并将其带到本地系统。它们的重要性源于保持系统更新最新软件版本、获取关键数据以及高效管理资源的需求。这些命令的意义在于其多功能性和易用性。例如,wget是一款功能强大的工具,能够处理多种协议,如 HTTP、HTTPS 和 FTP。它递归下载文件并镜像整个网站的能力对于管理大规模系统或网站的管理员尤其重要。另一方面,curl同样强大,支持多种协议,使管理员不仅能够下载文件,还能执行各种其他网络相关任务,如向服务器发送数据和处理身份验证。
这些命令对于系统管理员来说不可或缺,因为它们在保持软件最新、检索重要数据以及确保系统平稳运行方面发挥着重要作用。它们的易用性、处理不同协议的灵活性以及加速下载的能力,使其成为每个 Linux 系统管理员工具包中的必备工具。让我们在 Linux 机器上实际应用这些命令:
-
使用
wget:wget http://192.168.x.xxx:80/file.txt命令用于从远程网络服务器下载文件。下面是该命令各部分的详细解释:http://192.168.x.xxx:80/file.txt:这是我们想要下载的文件的 URL。这里的http指定了用于下载的协议——在本例中为 HTTP
当我们执行此命令时,
wget会与提供的 IP 地址和端口建立 HTTP 连接,发送 HTTP GET 请求以获取指定的文件(/file.txt),并收到该文件的内容作为响应。下载的文件将以与服务器上相同的名称(在本例中为file.txt)保存在我们本地计算机的当前工作目录中:

图 11.5 – 使用 wget 下载文件
-
使用
curl:curl -O http://192.168.x.xxx:80/file.txt命令用于使用curl命令行工具从远程网络服务器下载文件。下面是该命令各部分的详细解释:-
curl:这是一个命令行工具,-O选项表示告诉curl使用与远程服务器上相同的名称保存下载的文件。此选项用于保留原始文件名。 -
http://192.168.x.xxx:80/file.txt:这是你想要下载的文件的 URL,类似于之前的解释:http:这是指定用于下载的协议——在本例中为 HTTP
当我们执行此命令时,
curl会与提供的 IP 地址和端口建立 HTTP 连接,发送 HTTP GET 请求以获取指定的文件(/file.txt),并收到该文件的内容作为响应。下载的文件将以与服务器上相同的名称(file.txt)保存在本地计算机的当前工作目录中: -

图 11.6 – 使用 curl 下载文件
通过提供批量下载、可恢复传输和详细进度报告等选项,wget和curl简化了从远程源获取文件的过程,提高了管理人员在各个领域和行业中的效率和生产力。
探索常见日志文件
系统管理员检查日志文件出于多种原因,因为它们在保持系统健康、诊断问题和确保安全方面至关重要。这些日志提供了系统活动、错误和事件的全面记录,使管理员能够深入了解系统的行为。例如,/var/log/messages日志是一个关于系统广泛事件的宝贵资源,有助于排查可能影响整个系统的问题。该日志的重要性在于它能够提供系统健康和性能的全貌,帮助管理员及早发现异常,处理潜在的瓶颈或威胁。
此外,日志文件如/var/log/secure和/var/log/auth.log在维护系统安全性方面至关重要。系统管理员持续监控这些日志,以跟踪身份验证和授权活动,帮助他们识别未经授权的访问尝试或安全漏洞。此类日志的重要性不容小觑,因为它们提供了调查安全事件、执行访问控制和减轻潜在安全风险所需的必要痕迹。此外,类似/var/log/httpd/这样的与 Web 服务器相关的日志,对于识别未经授权的访问尝试、可疑活动或 Web 服务器错误至关重要,这对于保持 Web 应用程序的完整性和安全性至关重要。定期检查这些日志使管理员能够主动识别和修复安全漏洞,从而确保敏感数据和系统的安全。
在 CentOS 8 中,几个常见的日志文件位于不同的目录中,记录系统事件、应用程序活动和错误。以下是一些常见日志文件的列表及其路径:
-
/var/log/messages:该日志文件包含由各个进程生成的系统通用消息。它是不同日志消息的汇总位置,包括来自守护进程、服务和内核的消息。
-
/var/log/dmesg:内核环形缓冲区的消息存储在这里。这些消息提供了关于内核在启动期间以及系统运行时与硬件交互的信息。
-
/var/log/boot.log:此文件包含与启动过程和启动信息相关的消息。它对于诊断启动问题非常有用。
-
/var/log/secure:认证和安全相关的事件,包括成功和失败的登录尝试,都会在此记录。监控此文件有助于追踪未经授权的访问尝试。
-
/var/log/wtmp:该日志文件记录用户的登录和登出历史。它保持用户会话及其持续时间的记录。
-
/var/log/yum.log和/var/log/dnf.rpm.log:这些日志包含了软件包管理活动。条目包括使用 YUM 或 DNF 包管理器执行的软件包安装、更新和删除操作。
-
/var/log/httpd/、/var/log/mariadb/、/var/log/nginx/:这些目录包含与 Apache、MariaDB 和 nginx 服务器相关的日志,包括访问日志、错误日志和其他服务器相关事件。
-
/var/log/maillog:这条日志专门用于与电子邮件相关的活动,跟踪邮件发送、接收和邮件服务器配置中的错误,有助于排除电子邮件通信问题。
-
/var/log/cron:专注于计划任务,这条日志记录了 cron 作业的执行情况及其结果,对于确保自动化任务按预期运行至关重要。
-
/var/log/audit/audit.log:审计日志是安全团队的宝贵财富。它包含系统活动和安全事件的记录,有助于识别可疑活动和政策违规行为。
-
/var/log/auth.log:与
/var/log/secure类似,这条日志专注于身份验证和授权活动。它是用户访问、密码更改和权限修改的窗口。 -
/var/log/kern.log:内核消息和与硬件相关的事件被记录在这里。在排除硬件问题或内核级别问题时,这些日志非常重要。
-
/var/log/udev:该目录包含与设备管理和设备事件相关的日志,有助于了解设备相关问题。
-
/var/log/sssd/和/var/log/avahi-daemon/:这些日志分别与系统安全服务守护进程(SSSD)和 Avahi 守护进程相关。SSSD 处理身份验证和身份解析,而 Avahi 专注于本地网络服务发现。
-
/var/log/firewalld:firewalld日志提供有关防火墙规则和活动的信息,有助于监控和管理网络安全。 -
/var/log/audit/:该目录存储 SELinux 审核日志,帮助跟踪与安全相关的事件并识别策略违规行为。
-
/var/log/sa/:系统账务(
sa)日志有助于监控系统性能指标,如 CPU、内存和磁盘使用情况。 -
/var/log/cloud-init.log:云初始化日志包含有关云实例初始化过程的信息,有助于跟踪基于云的系统设置。
-
/var/log/libvirt/:Libvirt 日志包含与使用 Libvirt 框架进行虚拟化相关的事件和活动。
本质上,系统管理员定期检查这些日志文件是不可或缺的。这些日志作为故障排除、性能优化和安全增强的重要工具,通过利用这些日志中嵌入的见解,管理员可以确保系统的无缝运行、快速解决问题,并保持强大的安全防护,从而有助于 Linux 环境的整体稳定性和可靠性。
总结
本章提供了针对 Linux 系统管理员的关键技术和工具的全面探索。本章旨在让管理员具备高效管理文件传输、执行无缝下载和有效处理日志文件的能力,这些都是维护健壮且安全的 Linux 系统的重要方面。我们首先学习了如何在利用netcat和socat的功能下,将文件复制到远程系统。这些工具促进了安全高效的文件传输,为管理员提供了自信地跨网络交换数据的手段。随后,我们深入探讨了利用wget和curl命令下载文件的技巧。这些命令使管理员能够无缝地从网络或其他远程位置获取内容,简化了获取系统管理和增强所需资源的过程。本章还进一步丰富了内容,深入讨论了日志文件的重要性及其多样性,日志文件是有效系统管理的基本组成部分。日志记录是监控系统活动、诊断潜在问题和保障安全协议的不可或缺的实践。通过深入了解常见的日志文件,Linux 系统管理员能够全面掌握系统健康状况和性能指标。掌握日志文件的理解能力对于故障排除、及时识别安全漏洞和优化整体系统功能至关重要。这一全面的探索使管理员具备了主动应对挑战、维护系统完整性和推动高效运营的专业知识。
在下一章,我们将深入探讨 Linux 系统的关键安全措施。我们将向你展示如何在 SELinux 中利用强制和宽松模式,管理 SELinux 布尔值,确保安全外壳(SSH)访问的策略、锁定用户账户的方法,以及增强系统启动安全性的技术。
第四部分:Linux 安全与云
在本部分,我们将深入探讨 Linux 安全,这是生产系统管理员的一项关键职责。Linux 拥有强大的安全工具,如 SELinux、集成防火墙和标准系统权限。本节提供了 Linux 安全措施的清晰概述,并指导你在 AWS 上设置 CentOS 8。
本节包含以下章节:
-
第十二章,探索 Linux 安全
-
第十三章,云中的 Linux
第十二章:探索 Linux 安全
在信息技术不断发展的背景下,系统和数据的安全始终是一个坚定的优先事项。作为无数基础设施的支柱,Linux 操作系统在各个领域巩固了其存在,从服务器到嵌入式设备。在这一领域,本章将展开一场全面的旅程,深入探讨 Linux 安全。此次探索不仅仅是强化数字堡垒的练习,它是保护敏感信息、保证操作完整性、维护用户信任的关键追求。在当今互联互通的数字时代,Linux 安全的重要性不可过分强调。各类组织依赖基于 Linux 的系统来管理数据库、驱动网站以及协调复杂的网络。这些系统包含大量敏感信息,从专有算法到个人用户数据。确保这些数据的安全不仅是保持竞争优势的必要条件,也是保护相关实体声誉的关键。安全漏洞可能导致严重后果,包括财务损失、法律后果和客户信任的丧失。
本次探索的目的超越了常规系统管理的范畴。这是针对可能利用漏洞并造成破坏的潜在威胁采取的主动立场。掌握深厚安全机制的 Linux 管理员可以建立强大的防御体系,抵御各种网络威胁,从恶意软件、勒索病毒到数据泄露和拒绝服务攻击。通过理解 Linux 安全的复杂性,管理员能够有效减轻风险、迅速应对新兴威胁,并防止可能摧毁操作的安全事件。
Linux 安全不仅仅是一个技术清单——它是负责任管理的一个核心组成部分。首先,Linux 是一个开源生态系统,这意味着其源代码是公开可获取的。虽然这促进了协作和快速开发,但也使系统暴露于潜在的审查和利用之中。因此,了解 Linux 安全至关重要,以便发现并修复可能被忽视的漏洞。此外,Linux 的多样化应用,从个人计算到企业服务器,要求对安全采取细致入微的方法。管理员必须在考虑到每种场景的独特安全需求的同时,穿越这一广泛的安全领域。这需要深入理解 Linux 安全机制,如访问控制、加密、身份验证协议和入侵检测系统。通过有效利用这些工具,管理员可以定制符合特定需求的安全策略。
从本质上讲,本章作为 Linux 管理的指南针,帮助管理员掌握必要的知识和策略,维护基于 Linux 的系统的韧性和完整性,构建一个安全作为运营成功不动摇支柱的数字环境。
本章将深入探讨以下主要内容:
-
使用强制模式和宽容模式
-
启用或禁用 SELinux 布尔值
-
锁定用户账户
-
SSH 安全配置
使用强制模式和宽容模式
在访问控制和安全管理领域,强制模式和宽容模式起着至关重要的作用,特别是在像 Linux 这样的操作系统中。这些模式与安全机制的行为有关,例如 强制访问控制(MAC)框架。例如,RHEL 和 Fedora Linux 使用 增强安全 Linux(SELinux)作为其 MAC 框架,而 Ubuntu 则使用 AppArmor 达到类似目的。强制模式表示一种严格遵守安全策略的状态,禁止任何违反这些规则的操作。另一方面,宽容模式采取更加宽松的态度,允许那些在“强制”模式下通常会被拒绝的操作。这些模式的目的是在保持系统完整性和促进必要操作之间找到平衡,避免不必要的阻碍。这些模式对于系统管理员来说至关重要,管理员可以通过它们增强系统安全性,同时确保系统平稳运行。通过使用强制模式,管理员可以确保所有操作,无论是用户还是应用程序发起的,都严格遵守既定的安全策略。这可以防止未经授权的访问,减少潜在的攻击面,并降低与漏洞、恶意软件渗透和未经授权的数据操作相关的风险。相反,宽容模式在需要严格安全措施立即实施可能会干扰关键操作或导致意外后果的场景中非常有价值。管理员可以暂时切换到宽容模式,以识别在强制模式下可能出现的问题。这种方法有助于在不造成系统广泛中断的情况下微调安全策略。此外,宽容模式允许管理员在完全执行安全策略更改之前,了解其范围和影响。
简要介绍 Linux 加固和 SELinux 强制模式与宽容模式的作用
在不断变化的网络安全领域,Linux 加固一词成为了一项重要的实践,用于提高基于 Linux 的系统的安全性。Linux 加固指的是通过最小化漏洞、减少攻击面并实施强有力的防御机制,系统化地增强 Linux 操作系统的安全性。在其核心,Linux 加固旨在创建一个能够抵御广泛威胁的环境,从网络攻击到未经授权的数据泄露。在技术与安全的精妙配合中,SELinux 的强制模式和宽容模式扮演着重要角色,塑造了系统管理员采用的防御策略。
强制模式的角色
在 MAC(强制访问控制)领域,SELinux 是一个开创性的框架,在 Linux 系统内强制执行细粒度的安全策略。SELinux 的强制模式扮演着类似于坚定守护者的角色,只允许与精确定义的安全规则一致的操作。当在强制模式下运行时,SELinux 会严格执行访问控制和安全上下文,从而限制潜在的恶意行为,降低未经授权入侵的可能性。此模式确保即使攻击者获得了访问权限,他们的活动和利用漏洞的能力也会受到严重限制,从而增强系统的整体韧性。要启用强制模式:

图 12.1 – SELinux 的强制模式
让我们更深入地了解:
-
setenforce命令用于修改 SELinux 的强制模式。通过运行sudo setenforce 1,你指示 SELinux 切换到强制模式。在此模式下,SELinux 将严格执行定义的安全策略,拒绝违反这些策略的操作。 -
要验证 SELinux 是否处于强制模式,可以使用
getenforce命令。getenforce命令提供了一种简单的方法来查询 SELinux 的状态,并确定它是处于强制模式还是宽容模式。
宽容模式的角色
相比之下,SELinux 的宽容模式则在安全领域中充当了一个具有洞察力的观察者。当切换到宽容模式时,SELinux 不会阻止违反安全策略的操作,但会积极记录这些事件。此模式为系统管理员提供了一个重要工具,帮助他们在不突然中断操作的情况下微调安全策略。通过分析在宽容模式下生成的日志,管理员可以识别如果系统处于强制模式时可能出现的问题。这一宝贵的反馈循环使管理员能够反复优化安全策略,确保在严格的安全性和操作功能之间找到最佳平衡,从而启用 SELinux 的宽容模式:

图 12.2 – SELinux 的宽松模式
让我们更仔细地看看:
-
这一次,通过运行
sudo setenforce 0,您指示 SELinux 切换到宽松模式。在宽松模式下,SELinux 不会主动阻止违反安全策略的操作,而是记录这些操作以便后续分析。 -
要验证 SELinux 是否处于强制模式,可以使用
getenforce命令来检查它是否已经切换到宽松模式。
总结来说,SELinux 的强制模式和宽松模式之间的动态互动展示了 Linux 强化的微妙艺术。这些模式为管理员提供了细致的安全管理方式,使他们可以在严格执行和务实观察之间做出选择。通过谨慎地部署这些模式,管理员能够在错综复杂的 Linux 安全世界中游刃有余,创建能够自信应对不断变化的网络威胁的强化环境。
启用或禁用 SELinux 布尔值
在复杂的 Linux 安全环境中,SELinux 作为一个动态框架,使管理员能够精细地调整访问控制并执行安全策略。SELinux 配置工具的核心是布尔值,它封装了能够启用或禁用特定安全功能的二进制设置。这些布尔值就像是加密密钥,能够解锁各种安全配置,允许管理员精确地塑造系统行为。从启用网络连接以支持 Web 服务器到允许特定用户交互,布尔值为定制安全协议提供了细致的方式,确保系统在所需的安全边界内运行。启用或禁用 SELinux 布尔值的重要性超越了单纯的定制化,它在将系统安全与数字环境日益变化的操作需求对接中起着关键作用。一个实际的例子可以在 Web 服务器场景中找到。在部署 Web 应用时,某些功能可能需要网络连接,比如发送电子邮件或访问远程数据库。通过操作布尔值,管理员可以为 Web 服务器进程启用特定的网络相关权限,同时将其他潜在的易受攻击操作锁定。这种细致的控制不仅可以降低风险,还确保了安全性是功能实现的推动力,而非阻碍。
SELinux 布尔值的使用扩展到系统管理员需要平衡安全性和可用性的场景。例如,在引入新的软件包时,它可能需要不寻常的访问权限才能发挥最佳功能。管理员可以修改布尔值,授予临时权限,而不是妥协整个系统的安全性。这使得管理员能够在受控环境中评估软件的行为,同时保持大系统的完整性。此外,启用或禁用特定布尔值的能力有助于实施符合组织政策和法规要求的安全策略。这不仅增强了安全性,还通过允许管理员满足独特的操作需求,简化了合规工作。现在,让我们看一下所有 SELinux 布尔设置的当前值,并了解输出:

图 12.3 – 当前布尔值输出
提供的输出是运行getsebool -a命令的结果。此命令用于显示所有 SELinux 布尔设置的当前值。SELinux 布尔值是二进制设置,决定是否启用(on)或禁用(off)特定的安全功能或权限。这些布尔值允许管理员精细控制 SELinux 强制执行的行为和安全策略。让我们分解输出并解释每一行:
-
abrt_anon_write --> off:这表示允许自动错误报告工具(ABRT)写入匿名内存的 SELinux 布尔值当前已禁用。 -
abrt_handle_event --> off:此布尔值控制是否允许 ABRT 处理事件,当前已禁用。ABRT 处理系统事件,如崩溃或异常终止。 -
abrt_upload_watch_anon_write --> on:这意味着允许 ABRT 监视具有匿名写入访问权限的上传的布尔值已启用。 -
antivirus_can_scan_system --> off:这表示允许杀毒软件扫描整个系统的布尔值当前已禁用。 -
antivirus_use_jit --> off:控制是否允许杀毒软件使用即时扫描(JIT)的布尔值已禁用。 -
auditadm_exec_content --> on:这表示允许auditadm用户执行内容的布尔值已启用。 -
authlogin_nsswitch_use_ldap --> off:决定authlogin程序是否应使用网络安全服务(NSS)LDAP 模块的布尔值已禁用。 -
authlogin_radius --> off:控制authlogin程序是否可以使用radius协议进行身份验证的布尔值已禁用。 -
authlogin_yubikey --> off:这意味着禁止authlogin程序使用 YubiKey 进行身份验证的布尔值已禁用。 -
awstats_purge_apache_log_files --> off:决定是否允许awstats清除 Apache 日志文件的布尔值已被禁用。
每一行都代表一个特定的 SELinux 布尔值及其当前状态。箭头旁边的值(即 on 或 off)表示该布尔值是启用还是禁用。这些布尔值允许系统管理员根据具体的操作需求调整系统的安全策略,同时保持系统的强大安全性。
搜索布尔值并获取其信息
按照以下步骤操作:
- 如果您不确定布尔值的确切名称,但想要搜索它,可以使用
semanage boolean -l命令:

图 12.4 – 搜索布尔值
- 要检查特定 SELinux 布尔值的状态,请使用
getsebool命令,并输入布尔值的名称。例如,要检查其状态,您可以运行以下命令:

图 12.5 – 检查特定布尔值的状态
- 现在,让我们运行一个命令来获取布尔值的信息:

图 12.6 – 获取布尔值的信息
上述命令会在 SELinux 布尔值列表中进行搜索,找到名为 xguest_connect_network 的布尔值,并显示其当前状态为 on,表示允许 xguest 用户或进程进行网络连接。注释提供了关于该布尔值存在原因以及它所控制内容的额外背景信息。
现在,让我们启用并禁用一个布尔值。
启用 SELinux 布尔值
要启用 SELinux 布尔值,可以使用 setsebool 命令并加上 -P 选项(该选项使更改永久),然后输入布尔值的名称和 1 表示启用。例如,如果您想启用 xguest_use_bluetooth 布尔值,可以运行以下代码:

图 12.7 – 启用布尔值
执行此命令后,我们使用 semanage 命令获取有关所做更改的信息。此命令将 xguest_use_bluetooth 布尔值设置为 on,并使该更改在系统重启后保持永久。
禁用 SELinux 布尔值
要禁用 SELinux 布尔值,请使用 setsebool 命令并加上 -P 选项,接着输入布尔值的名称和 0 表示禁用。例如,要禁用 mount_anyfile 布尔值,请按以下步骤操作:
-
查询当前状态:
semanage boolean -l | grep mount_anyfile:此命令列出所有 SELinux 布尔值,并使用grep过滤输出,查找包含mount_anyfile的行。该行显示mount_anyfile布尔值当前已启用,如(on, on)所示。此外,它还提供了描述Allow mount to anyfile,解释了此布尔值的目的。 -
禁用布尔值:
setsebool -P mount_anyfile 0:此命令使用setsebool来更改mount_anyfile布尔值的状态。-P标志使此更改永久生效(即使在重启后也能保持),0表示“关闭”。运行此命令后,SELinux 被配置为禁止mount命令将任何文件挂载为文件系统。 -
验证更改:
semanage boolean -l | grep mount_anyfile:此命令用于查询在修改后mount_anyfile布尔值的状态。现在,它显示为(off, off),确认该布尔值已被禁用。描述保持不变,表明mount命令不允许将任何文件挂载为文件系统:

图 12.8 – 禁用布尔值
此命令将mount_anyfile布尔值设置为off,并确保此更改在系统重启后依然有效。
总结来说,命令检查了mount_anyfile SELinux 布尔值的状态,禁用了它,并验证更改是否生效。SELinux 布尔值使管理员能够精细控制系统中的访问权限和权限,修改这些布尔值时应清楚了解它们对系统操作的安全影响。
锁定用户账户
在 SELinux 中,锁定用户账户的概念通常与标准的 Linux 账户管理实践相关,例如使用passwd命令。SELinux 本身并不直接处理账户锁定;相反,它依赖 Linux 的账户管理工具来锁定和解锁用户账户。以下是一些锁定和解锁用户账户的终端示例:
-
锁定用户账户:
要锁定用户账户,通常通过更改账户的密码来禁用该账户。这可以通过使用
passwd命令并加上-l(锁定)选项来实现:

图 12.9 – 锁定用户账户
-
解锁用户账户:
要解锁已被锁定的用户账户,可以再次使用
passwd命令,并加上-u选项来解锁,同时使用f选项强制执行:

图 12.10 – 解锁用户账户
第一个命令解锁了 intruder 用户的密码,输出确认该账户已成功解锁。第二个命令提供了关于该用户当前密码状态的信息,表明他们已设置密码,并且密码使用 SHA-512 加密。这一场景确保 intruder 用户现在可以使用他们的密码访问账户。
加固 SSH
安全外壳(SSH)是一种广泛使用的协议,用于通过不安全的网络进行安全远程访问和文件传输。它在现代 IT 基础设施中扮演着至关重要的角色,使管理员、开发人员和用户能够安全地访问远程系统。然而,要充分发挥 SSH 的潜力,并在远程连接过程中维护数据的机密性和完整性,实施强有力的安全措施至关重要。
加固 SSH 的主要目的是保护敏感信息,并防止未经授权访问远程系统。SSH 通过在传输过程中加密数据,并采用强大的身份验证机制来实现这一目标。通过使用加密协议,SSH 确保客户端与服务器之间交换的数据保持机密,并且不易受到恶意攻击者的窃听。此外,SSH 的公钥认证和基于密码的认证机制增强了远程访问的安全性,降低了未经授权登录的风险。SSH 的安全隧道功能(即 SSH 隧道)还扩展了它的使用范围,除了远程访问外,还可用于安全的数据传输和网络管理。总之,保护 SSH 安全对于保护敏感数据、抵御恶意入侵以及确保远程连接的可信度至关重要。SSH 安全性的重要性在于其在企业环境中的普及性及其在保障远程访问服务器、网络设备和云基础设施安全方面的关键作用。SSH 安全性不足可能导致灾难性的后果,包括数据泄露、未经授权的系统访问和机密信息泄露。这强调了实施最佳实践的必要性,例如强制执行强密码策略、使用多因素认证,并配置 SSH 服务器以仅允许受信任的用户和主机访问。SSH 安全性还符合合规要求和监管标准,因此对于受到 GDPR 或 HIPAA 等数据保护法规约束的组织至关重要。以下是一些示例:
-
更改默认 SSH 端口:
将默认的 SSH 端口(
22)更改为非标准端口有助于防止自动扫描和暴力破解攻击。要将 SSH 端口更改为
2222,请编辑位于终端角落的 SSH 配置文件/etc/ssh/sshd_config,如以下截图所示:

图 12.11 – 更改默认端口
在文件中,找到 Port 22 这一行并将其更改为 Port 2222 或您选择的任何其他端口号。保存文件。
-
更新 SELinux 规则:
当启用 SELinux 时,需要注意的是,SELinux 策略旨在通过对各种系统资源(包括网络端口)强制执行严格的规则和限制来增强系统安全性。这些策略可能最初会阻止您在新端口上配置的 SSH 流量。
为确保 SSH 流量能够顺畅地流动到新端口,您需要更新 SELinux 策略以允许它。您可以使用
semanage命令来实现这一点,semanage是一个强大的 SELinux 策略管理工具。具体来说,您需要使用semanage修改 SELinux 端口策略,以允许在新端口上进行 SSH 通信。一旦您完成了必要的策略调整,务必应用这些更改,并重启 SSH 服务以使新配置生效。这确保了根据更新后的 SELinux 策略,修改端口上的 SSH 连接能够被允许。以下是您可以执行的步骤:

图 12.12 – 更新 SELinux 规则并重启 sshd
我们可以通过运行以下命令来验证这一点:

图 12.13 – 验证更改
-
禁用密码认证:
禁用基于密码的认证,改用公钥认证可以通过消除密码猜测攻击的风险来增强安全性。
编辑 SSH 配置文件
/etc/ssh/sshd_config,该文件位于 shell 的角落,如下所示的截图所示:

图 12.14 – 禁用密码认证
找到 PasswordAuthentication yes 这一行并将其更改为 Password Authentication no。保存文件并重启 SSH:

图 12.15 – 重启 sshd
最终,确保 SSH 安全不仅仅是技术实施的问题,更是全面网络安全策略的基本组成部分,它有助于增强 IT 系统的韧性和可信度。
总结
本章为 Linux 管理员提供了关于 SELinux 模式及其如何影响系统安全的深入理解。我们探讨了强制模式和宽松模式的概念,以及它们在 Linux 管理中的重要性。管理员需要学会利用这些模式,以在安全性和系统功能之间找到平衡,确保有效执行 SELinux 策略。本章还涵盖了启用或禁用 SELinux 布尔值这一关键主题。我们深入探讨了 SELinux 布尔值的原因、重要性及其实际应用,展示了它们如何帮助管理员根据特定的系统需求微调安全策略。通过启用或禁用布尔值,管理员可以在确保高安全性的同时,为系统量身定制 SELinux 策略,提供更大的灵活性。本章还探讨了系统安全的另一个重要方面,即在 SELinux 安全中锁定用户帐户。在这一部分,你了解了锁定用户帐户的原因、重要性及其在 SELinux 框架内实现的方法。这些知识应该帮助你有效管理用户访问权限,提升系统的整体安全性。
最后,我们深入探讨了 SSH 的安全性,这是远程系统管理的一个关键组件。管理员学习了确保 SSH 安全的最佳实践,包括更改默认 SSH 端口、禁用密码认证并使用公钥认证、以及将 SSH 访问限制为特定用户或组。通过实施这些安全措施,管理员增强了远程访问 Linux 系统的安全性。
在下一章中,我们将探索云计算的世界,以及 Linux 在其中扮演的关键角色。本章将带领你了解如何在云端运行 Linux 机器、创建 Linux 实例,以及在基于云的 Linux 环境中的各种管理任务。到本章结束时,你将掌握在云计算时代中茁壮成长所需的知识和技能。
第十三章:云中的 Linux
云计算的出现彻底改变了 IT 基础设施的格局,而 Linux 一直站在这一变革的前沿。Linux 在云生态系统中的整合不仅重塑了企业和组织管理计算资源的方式,也为系统管理员提供了一个动态且可扩展的环境。本介绍深入探讨了 Linux 在云中的关键作用,以及它如何重新定义系统管理的格局。Linux 以其开源特性和多功能性而著称,已经顺利适应了云环境。通过这样做,它为基于云的解决方案提供了一个稳定且灵活的基础。Linux 在云中突出的一个关键原因是它能够为特定的云服务提供商(如 Amazon Web Services (AWS)、Microsoft Azure 和 Google Cloud Platform)提供量身定制的发行版。对于系统管理员来说,这意味着他们可以以与所选云基础设施完美契合的方式利用 Linux 的强大功能,从而简化资源管理和部署。
Linux 在云计算中的一个主要角色是让系统管理员能够轻松创建和管理虚拟实例。像 CentOS 这样的 Linux 发行版为管理员提供了强大且安全的平台,可以部署从网站托管到数据分析等各种云服务。虽然 CentOS 因其稳定性、兼容性和强大的社区支持而闻名,但需要注意的是,Ubuntu 和其他各种基于 Linux 的服务器在云中也被广泛使用。当进行互联网搜索时,你会发现关于这些平台是否适合你特定需求的不同观点。这不仅简化了虚拟机启动的过程,还允许管理员根据需要上调或下调资源,提供响应迅速且具有成本效益的解决方案。
Linux 还提供了许多对云中系统管理至关重要的功能和工具,如下所示:
-
资源虚拟化:Linux 允许系统管理员创建和管理 虚拟机 (VMs),虚拟机是可以在单一物理服务器上运行多个操作系统和应用程序的隔离计算环境。这使得资源的高效利用成为可能,并促进了云服务的动态扩展。
-
容器化:Linux 还是容器化的流行平台,容器化是一种轻量级的虚拟化技术,允许应用程序在称为容器的隔离环境中打包并部署。容器具有高度的可移植性和可扩展性,非常适合运行云原生应用程序。
-
安全性:Linux 以其安全性特性而闻名,例如增强型安全 Linux(SELinux),它提供了对系统访问和权限的细粒度控制。这使得 Linux 成为一个安全的平台,适合在多租户环境中运行基于云的工作负载。
-
自动化:Linux 提供了一系列工具和框架,用于自动化系统管理任务,如配置管理、部署和监控。这使得系统管理员能够高效且有效地管理大型且复杂的云环境。
此外,诸如 CentOS 等 Linux 发行版优先考虑云环境中的安全性和稳定性。系统管理员依赖 Linux 严格的安全协议和及时的更新来保护基于云的资产免受威胁。Linux 的开源性质进一步使管理员能够根据特定的组织需求定制安全配置,确保托管在云中的数据和应用程序的安全。
在本章中,我们将深入探讨 AWS 服务范围内的以下主要主题:
-
在 AWS 上创建 EC2 实例
-
使用 PuTTY 连接到已创建的 EC2 实例
-
在我们的 EC2 实例上工作
在 AWS 上创建 EC2 实例
在 AWS 上创建弹性计算云(EC2)实例是构建和部署可扩展、灵活的云计算资源的基础步骤。EC2 实例可以被视为 AWS 云中的虚拟服务器,了解如何创建 EC2 实例对于充分发挥 AWS 的强大功能至关重要。这项技能的重要性在于它为企业和组织提供了无与伦比的灵活性和成本效益。通过创建 EC2 实例,用户可以按需提供计算能力,根据变化的工作负载纵向或横向扩展资源,并通过仅为所消耗的资源付费来实现运营效率。创建 EC2 实例的主要原因在于它们为云计算领域带来的灵活性和多功能性。EC2 实例可以根据特定的应用需求进行定制,无论是运行 Web 服务器、托管数据库、进行数据分析还是运行机器学习工作负载。能够从多种实例类型中进行选择,每种实例类型都针对不同的使用场景进行了优化,允许用户根据应用需求量身定制其虚拟服务器。此外,用户可以选择操作系统、配置网络设置并选择存储选项,从而对云基础设施拥有无与伦比的控制权。
创建 EC2 实例的用途不仅仅是资源分配;它还包括高可用性、容错性和可扩展性。EC2 实例可以与 AWS 服务如弹性负载均衡(ELB)、自动扩展和 Amazon RDS 集成,以构建具有弹性和可扩展性的应用程序。可以随时启动、停止和终止实例,从而确保资源的最佳利用和成本管理。此外,EC2 实例是许多基于云的解决方案的基础,包括网站托管、数据处理和内容交付,因此它们是 AWS 广大生态系统中的核心组成部分。总之,掌握 EC2 实例的创建对于任何想要充分利用 AWS 云计算能力的人来说都是至关重要的。这使用户能够设计和部署稳健、可扩展且成本效益高的云解决方案,满足现代企业和组织的独特需求。
在创建实例之前,请访问 AWS 网站 (aws.amazon.com/) 创建账户。请注意,初始账户激活可能需要长达 24 小时的时间,因此必须提前规划。在 AWS 免费套餐的背景下,需要了解它为用户提供了在特定使用限制下免费探索 AWS 服务的机会。您可以在以下截图所示的常见问题解答部分找到更多信息:

图 13.1 – AWS 免费套餐信息
接下来,我们可以登录我们的 AWS 账户,并在 AWS 平台上开始创建 EC2 实例:
- 我们可以在控制面板上找到 EC2,如下图所示:

图 13.2 – 搜索 EC2 虚拟服务器
该操作将带我们进入 EC2 控制面板。在资源部分,我们当前没有正在运行的实例、专用主机和实例,如下图所示:

图 13.3 – EC2 控制面板和资源面板
- AWS 控制台提供了一个用户友好的界面,用于管理您的 EC2 实例。点击实例按钮可以访问一个页面,显示您的活动 EC2 实例。在这里,您可以执行各种操作,如停止或终止正在运行的实例,并与它们建立连接。另一方面,启动实例按钮将引导您进入一个专门用于创建新 EC2 实例的页面。在这里,您可以从多种实例类型中选择,并根据需要定制实例的操作系统、应用程序和其他设置。

图 13.4 – 查看活动的 EC2 实例
- 首先,我们为实例命名。然后,点击浏览更多 AMI 链接:

图 13.5 – 选择一个 AMI(1)
- 接下来,我们将导航到市场区域中的
CentOS 8并选择下面截图所示的选项:

图 13.6 – 选择一个 AMI(2)
AWS 中的 AMI 作为现成的模板或虚拟机镜像。它们包含了启动虚拟实例所需的操作系统、应用程序服务器和其他必要软件等基本组件。这些 AMI 简化并加快了创建虚拟机的过程,免去了手动安装和配置的麻烦。此外,AMI 具有多样性,提供不同配置,并且与多种操作系统兼容,是在 AWS 云中快速部署虚拟实例的基石。如需了解 AMI 的更详细信息,请访问docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html?tag=buylocal0e8-20。
- 接下来,我们会看到一个弹出窗口,显示 CentOS 8 的相关信息和一个继续按钮。点击它:

图 13.7 – 选择一个 AMI(3)
-
接下来是密钥 对(登录)。
一个密钥对由两个加密密钥组成:公钥和私钥。公钥用于加密数据,而私钥用于解密数据。当使用密钥对登录到实例时,实例使用公钥来加密你的登录凭证。随后,你使用私钥解密登录凭证。
关于密钥对登录屏幕的附加信息包括:
-
选择密钥对下拉菜单显示与你的账户相关联的所有密钥对列表。
-
创建新密钥对按钮允许你生成一个新的密钥对。
-
下载你的密钥对按钮允许你下载与所选密钥对相关的私钥。
-
注意
保持你的私钥秘密非常重要。如果其他人获得了你的私钥,他们将能够登录到你的实例并访问你的数据。

图 13.8 – 密钥对(登录)窗口
-
让我们创建一个新的密钥对。你需要点击
connect。 -
密钥对类型:此字段允许你选择要创建的密钥对类型。你有两个选项:RSA或ED25519。RSA 是更常见的密钥对类型,所有 AWS 服务都支持它。ED25519 是一种更新且更安全的密钥对类型,优于 RSA,但我们将使用 RSA。
-
私钥文件格式:在此字段中,您可以选择希望保存私钥的格式。您有两种选择:.pem 或 .ppk。.pem 是私钥的标准格式,所有 SSH 客户端都支持它。.ppk 是 PuTTY SSH 客户端特有的格式。我们将选择.ppk选项,然后点击创建密钥 对按钮:

图 13.9 – 创建密钥对
点击 Downloads 文件夹后:

图 13.10 – 下载的 .ppk 密钥
接下来,我们将进行网络设置。安全组页面提供了与您的 AWS 账户关联的所有安全组的综合视图。该页面上每个安全组条目包括安全组名称、描述及其虚拟私有云(VPC)关联等信息。在安全组页面,您可以执行多种操作,包括创建新安全组、修改现有的安全组以及删除不再需要的安全组。
让我们深入了解什么是 VPC。
VPC 是 AWS 及类似云计算平台的基本组成部分。它是一个虚拟网络环境,允许用户创建和管理 AWS 云基础设施的逻辑隔离部分。VPC 提供了对云资源的额外安全层和控制权限,允许用户设计自己的网络架构,定义 IP 地址范围,创建子网,并配置路由表。
在 VPC 内,用户可以启动和管理广泛的云资源,包括虚拟机(EC2 实例)、数据库、负载均衡器等。通过将云环境划分为 VPC,组织可以建立与传统数据中心架构相似的隔离网络,同时享有云的灵活性和可扩展性。这种隔离使用户能够实施精细化的安全策略,确保只有授权流量能够访问 VPC 内的资源。VPC 还支持创建 VPN 和与本地数据中心的直接连接,促进安全的混合云部署。总之,VPC 是云网络的基石,为部署和管理云资源提供了一个灵活且受控的环境,同时增强了安全性和网络隔离。
- 要启动创建新安全组的过程,请在网络 设置页面点击编辑按钮:

图 13.11 – 编辑安全组(1)
-
在下一页,点击创建安全组按钮以创建一个新的安全组。
要编辑现有的安全组,请点击相应的安全组名称:

图 13.12 – 编辑安全组(2)
-
如果你希望删除一个安全组,点击安全组名称,然后点击删除安全组按钮。
这里有一些有效利用安全组的有用技巧:
-
保持限制规则:在设置安全组时,遵循最小权限原则。仅允许对 EC2 实例功能至关重要的流量。
-
隔离流量:为不同类型的流量创建独立的安全组。例如,将 Web 服务器和数据库服务器的安全组分开,可以增强你的网络安全性。
-
定期审核:定期评估你的安全组,以确保它们与你不断变化的需求和安全要求相符。
-
-
最后,我们来看一下规则。它们允许来自互联网任何来源的 SSH 流量连接到指定安全组的端口
22:

图 13.13 – 入站安全组规则
让我们分解一下这个规则的各个组件:
-
类型:这表示规则允许的流量类型。在此实例中,它是ssh。
-
TCP。 -
22。 -
0.0.0.0/0,表示允许来自互联网任何地方的流量。 -
描述:这是规则的简要描述,在此情况下为 SSH 访问。
-
接下来,我们将配置存储。
根卷类型是指用于实例根设备的存储,该设备包含操作系统和必要文件。
有两种主要的根卷类型:
30GB:

图 13.14 – 配置存储
- 实例存储:这些卷为 EC2 实例提供临时存储,但不具备持久性。实例存储卷中的数据在实例终止时不会保留。
在启动 EC2 实例时选择根卷类型。虽然启动后可以更改根卷类型,但这样做需要停止实例。
大多数 EC2 实例选择 EBS 卷作为其根存储,原因如下:
-
持久性:EBS 卷即使在实例终止后也会保留数据,因此非常适合存储关键数据,如操作系统文件和应用程序数据。
-
可扩展性:EBS 卷可以调整大小,适应具有不同存储需求的应用程序。
-
通用用途(SSD)、预置 IOPS(SSD)和磁性,使用户能够根据其应用程序选择适当的性能级别。
-
在做出这些选择后,我们进入摘要区域以启动实例。摘要包含以下信息(另见图 10.15):
-
实例数量:1
-
软件镜像(AMI):CentOS-7-2111-20220825_1.x86_64 ami-002070d43b0a4f171
-
虚拟服务器类型(实例类型):t2.micro
-
防火墙(安全组):INS-Security-Group
-
存储(卷):1 个卷 - 30 GB
概述还显示该实例符合 AWS 免费套餐的条件。这意味着您在第一年内每月最多可以免费使用该实例 750 小时。
-

图 13.15 – 概述
- 点击 启动实例。当您看到实例启动进度成功时,点击 EC2 旁边的 实例:

图 13.16 – 实例成功启动
- 在前一步点击 EC2 后,我们将被重定向到 EC2 仪表板 页面。以下截图显示了一个状态为 Running 且状态检查为 2/2 checks passed 的 AWS EC2 实例:

图 13.17 – 2/2 checks passed
这表示实例当前正在运行,并且 AWS EC2 执行的两项状态检查已成功完成。
AWS EC2 对每个运行中的实例进行两种类型的状态检查:
-
系统状态检查,用于监控支持实例的 AWS 系统
-
实例状态检查,用于识别 EC2 实例内部的问题
如果这些状态检查中的一个失败,则实例的总体状态会标记为 Impaired。在这种情况下,实例可能无法按预期正常运行。
Impaired 状态表示实例的健康状况可能存在问题,但并不意味着实例无法修复。
根据问题的性质,您可能能够在不重新创建整个 AMI 的情况下进行故障排除并解决问题。解决问题的具体步骤将取决于故障的性质。以下是一些问题类型的示例:
-
系统状态检查失败:如果此检查失败,通常表示底层基础设施存在问题。AWS 可能会自动尝试恢复实例。在某些情况下,您可能需要停止并重新启动实例,或者您可能需要联系 AWS 支持寻求帮助。
-
实例状态检查失败:当此检查失败时,通常指向实例本身的问题,例如软件或配置问题。通常您可以访问实例,识别问题并应用修复,而无需创建新的 AMI。
在前面的截图中,2/2 checks passed 状态确认系统检查和实例检查都已成功通过,表明实例处于健康且完全运行的状态。
使用 PuTTY 连接到已创建的 EC2 实例
在 AWS 中建立与 EC2 实例的连接是利用云计算能力的一个基础步骤。它涉及到创建到托管在 AWS 云基础设施中的虚拟服务器的远程连接。这个连接允许用户访问、管理和配置虚拟服务器,充分利用 AWS 提供的灵活性、可扩展性和成本效益。
连接到 EC2 实例的主要动机是获得对基于云的服务器环境的安全和高效的远程访问。这种连接对系统管理员、开发人员和 DevOps 从业者来说非常宝贵,使他们能够执行与服务器设置、软件安装、实时监控、故障排除和日常维护相关的关键任务。它使服务器资源的无缝管理和文件传输成为可能,并能够及时实施系统更新,所有这些都不需要在服务器位置亲自操作。连接到 EC2 实例对于部署和管理 Web 应用程序、数据库和其他云原生服务至关重要。它简化了协作工作,并确保云资源在任何位置都能访问,使其成为现代云基础设施管理的一个基本组成部分。
连接到 EC2 实例的目的多种多样。系统管理员使用远程访问来监督服务器配置、应用安全补丁并监控性能指标。开发人员利用这些连接来部署和测试应用程序、调试程序以及管理云中的开发环境。DevOps 团队依赖远程连接来简化服务器配置、配置大规模的服务器群集,并高效地协调复杂的持续集成/持续部署(CI/CD)流水线。采用基础设施即代码(IaC)原则的组织依赖远程访问来系统化和高效地编程管理云基础设施。
在连接到我们创建的实例之前,请访问 www.chiark.greenend.org.uk/~sgtatham/putty/latest.html 下载 PuTTY。根据你系统的架构,可以选择 64 位版本或 32 位版本:

图 13.18 – PuTTY 64 位版本或 32 位版本
安装 PuTTY 后,我们可以继续检查我们创建的 Linux 实例。我们将检查实例摘要,其中包括公共 IPv4 地址以及与安全、网络、存储、状态检查、监控、标签和私有 IPv4 地址相关的详细信息:

图 13.19 – 实例摘要视图
我们可以尝试快速使用 PuTTY 连接到我们的实例:

图 13.20 – PuTTY 配置
输入实例摘要中的公有 IP 地址到 22,然后点击 打开。随后,你将看到 PuTTY 输出。屏幕截图中的信息显示,我们的用户正在尝试以 root 用户身份通过公钥登录到 EC2 实例。这是因为,默认情况下,EC2 实例上的 root 登录是禁用的:

图 13.21 – PuTTY 输出
系统提示用户改为以 centos 用户登录,但在此之前,让我们先检查一下如何在 PuTTY 上加载我们的 .pkk 密钥。定位到密钥:

图 13.22 – 将 .pkk 密钥添加到 PuTTY
我们可以给它任何名称。看一下下面的示例:

图 13.23 – 已保存会话设置
图中的箭头指向的是 PuTTY 会话的默认设置,它们位于以下位置:
-
centos@35.172.201.164。 -
已保存会话:此按钮允许你将当前 PuTTY 会话设置保存到文件中。如果你经常连接到同一台服务器,这将非常有用,因为你可以简单地加载已保存的会话设置,而不必像在图中所示的 Linux-AWS 一样每次输入。
-
加载:此按钮允许你加载已保存的 PuTTY 会话。只需选择你想加载的会话文件,然后点击 加载 按钮。
-
.``pkk密钥:

图 13.24 – 使用公钥进行身份验证
成功建立连接后,你将获得访问终端窗口的权限,从而高效地管理实例。
在验证系统可用空闲空间的过程中,我们使用 df 命令显示文件系统的相关信息。该命令提供磁盘使用情况和可用空间的视图。此外,我们执行 whoami && hostname && uname -a 命令序列。whoami 命令检索当前用户的用户名,hostname 显示系统的主机名,uname -a 提供全面的系统信息,包括内核版本和架构。
总结一下,连接到 EC2 实例是解锁云计算全部潜力的关键一步,它便于服务器管理、云原生应用开发和基础设施自动化,所有这些都能无缝集成在 AWS 云环境中。
在我们的 EC2 实例上工作
在本节中,我们将利用一些类似于 CentOS 中使用的命令,并应用于执行一些简短任务。所以,让我们开始吧:
-
更新 和升级:
你刚刚在 AWS 上启动了 CentOS 8 Linux 实例。为了确保其最新,使用以下命令:

图 13.25 – 更新和升级
这是交易摘要:

图 13.26 – 事务总结
总结信息显示有一个软件包正在安装中,42 个软件包正在更新,累积下载大小为 110 MB。系统提示用户决定是否继续安装过程。
在更新软件包时,软件包管理器作为用户管理软件安装、更新和删除的重要工具,能够简化系统操作。这些工具提供了灵活性,可以从多个来源安装软件,包括官方仓库、第三方仓库和本地文件,为用户提供多样的软件管理选项。
-
软件包安装:
以下展示了在 CentOS 8 实例上安装 Apache Web 服务器的过程:

图 13.27 – 安装软件包
-
服务管理:
以下是启动 Apache 服务并启用其开机自启的步骤:

图 13.28 – 启动 Apache 服务
下面是该命令的细分:
-
sudo systemctl status httpd:此命令检查 Apache HTTP 服务器 (httpd) 的状态。它显示有关服务的信息,如描述、是否已加载或处于活动状态,以及相关文档。在这种情况下,它显示该服务已加载但处于非活动(已停止)状态。 -
sudo systemctl start httpd:此命令启动 Apache HTTP 服务器。它启动服务,使其变为活动状态并开始运行。 -
sudo systemctl enable httpd:此命令启用 Apache HTTP 服务器在启动时自动启动。它会在多用户目标和 httpd 服务之间创建符号链接,确保系统启动时服务自动启动。 -
sudo systemctl status httpd:在启动并启用服务后,此命令再次检查 Apache HTTP 服务器的状态。现在,它显示服务已加载、已启用并且处于活动(运行)状态。它还提供有关该服务的额外信息,包括其主要 进程 ID (PID) 和当前状态。 -
journalctl用于访问并查看 Linux 系统上的systemd日志。systemd日志是一个系统日志,包含系统及其组件生成的各种日志条目和消息。journalctl的输出以时间顺序显示日志条目,提供有关系统活动和事件的信息。在提供的输出中,我们可以观察到以下细节:
-
该命令显示的日志可以从特定的时间戳开始(例如,
Mon 2023-10-16 21:22:47 UTC),并以另一个时间戳结束(例如,Mon 2023-10-16 23:15:01 UTC),理解为时间戳可能会有所不同。 -
日志显示了各种系统事件,包括来自
systemd组件和内核相关活动的消息。 -
这些事件可能包括系统初始化、SELinux 策略加载、硬件和内核配置、虚拟化检测、主机名配置等。
-
日志条目还包括关于
systemd进程及其状态的详细信息,比如是否启动成功或遇到问题。 -
journalctl命令提供了系统活动的全面视图,有助于系统管理、调试和故障排除。
-

图 13.29 – 跟踪系统活动
journalctl是一个有价值的工具,帮助系统管理员监控系统健康状况并诊断问题。提供的输出代表了系统日志的一部分,包含事件和时间戳,允许用户有效地跟踪系统活动并诊断问题。
sudo find / -size +100M命令用于搜索整个文件系统(/),查找大于 100MB 的文件(+100MB)。它从根目录开始,搜索所有目录及子目录。输出会显示所有符合大小标准的文件路径:

图 13.30 – 查找文件 (1)
提供的输出显示它已经定位到几个大于 100MB 的文件,包括以下内容:
-
/proc/kcore:这个文件代表内核的核心内存,这是一个虚拟文件,而不是磁盘上的实际文件 -
/var/cache/yum/x86_64/7/updates/gen/primary_db.sqlite:这是一个数据库文件,由 YUM 包管理器用于存储有关可用包和更新的信息 -
/usr/lib/locale/locale-archive:这个文件包含用于国际化和本地化的系统区域信息
文件路径后的错误信息表明find命令无法访问/proc目录下的某些目录,这是预期中的情况,因为/proc是一个虚拟文件系统,里面不包含实际的磁盘文件。在这种情况下,错误信息可以安全地忽略。
sudo find / -user root -o -group root | less命令用于搜索整个文件系统(/),查找属于root用户或root组的文件和目录:

图 13.31 – 查找文件 (2)
命令中的| less部分将输出管道传递给less命令,允许更方便地浏览和逐屏查看结果。
提供的输出显示它已经定位到/dev目录中各种文件和目录,这些文件和目录要么属于root用户,要么属于root组。包括以下内容:
-
/dev/vhci:这是一个虚拟主机控制器接口 -
/dev/vfio:这是一个虚拟功能 I/O 接口 -
/dev/vfio/vfio:这是/dev/vfio下的一个子目录 -
/dev/ppp:这与点对点协议(PPP)设备相关 -
/dev/uinput:这是一个虚拟输入设备 -
/dev/mqueue:这些是消息队列设备 -
/dev/hugepages:这些是与内存管理中的大页相关的文件 -
/dev/initctl:这是一个先进先出(FIFO)特殊文件,用于与 init 进程进行通信
该命令对于系统管理员在识别具有特定所有权或组成员资格的文件和目录非常有帮助,这对于管理系统安全性和访问控制尤为重要。less命令用于使输出更易读、更易导航,尤其是在处理大量搜索结果时。
总结
本章指导你完成了在 AWS 上创建 Amazon EC2 实例的全面过程。本章探讨了在云中建立虚拟服务器所需的关键步骤,并深入研究了 AWS 上可用的各种实例类型和配置。重点关注实用性,你还学到了配置实例细节、更改存储以及为性能和安全设置安全组的宝贵知识。本章让你掌握了在云环境中管理 EC2 实例的知识和技能。它提供了逐步指南,教你如何在成功创建后与 AWS EC2 实例建立安全连接。本章还介绍了 PuTTY,一款广泛使用的 SSH 客户端,并详细阐述了如何有效使用它连接到基于 Linux 的 EC2 实例。旅程从 PuTTY 的概述和用于安全身份验证的 SSH 密钥对的基本概念开始。此外,你还获得了有关安装和配置 PuTTY 的详细指导,包括设置会话、配置凭证位置并加载会话。最后,在我们的 EC2 实例操作部分,我们探索了用户可以在 AWS EC2 实例上执行的实际管理任务。本章强调了更新和升级 EC2 实例的重要性,以确保它们的最佳运行并安装最新的软件包。它提供了逐步的指导,教你如何使用包管理器有效安装、更新和升级软件。你还学习了服务管理,能够使用systemd启动和管理服务。接着,本章介绍了journalctl,这是一个强大的工具,用于访问系统日志,监控活动、排除故障以及收集重要的系统健康信息。最后,本章通过使用find命令进行目录管理,圆满结束了你对动态云环境中 EC2 实例管理的全面理解。


浙公网安备 33010602011771号