Linux核心操作知识体系深度解析

        Linux,作为开源操作系统领域的璀璨明珠,诞生于自由、共享的开源文化土壤。凭借高度灵活性、卓越稳定性和强大安全性,在服务器部署、云计算平台搭建、嵌入式系统开发等关键领域占据着不可或缺的地位。从规模庞大的数据中心,到小巧的物联网设备,到处都有Linux的身影,彰显出其无与伦比的适应性和魅力。本文将深入剖析Linux系统管理与操作的核心知识体系,为读者搭建全面且深入的技术框架。

  (一)、包管理工具

 1. Yum/DNF相关


        Yum(Yellowdog Updater, Modified)与DNF(Dandified Yum)是RPM系Linux发行版(如CentOS、Red Hat、OpenEuler)的核心包管理工具。Yum就像是一位熟练的管家,通过 yum install 命令,能精准地从软件源获取并安装所需软件; yum update 则可对已安装软件进行更新,时刻保持系统软件的时效性; yum remove 命令能干净利落地卸载软件,让系统整洁有序。
        而DNF作为Yum的升级版,在性能上实现了飞跃。它优化了依赖解析算法,就像升级了导航系统,能更快速地处理复杂的软件依赖关系,支持更复杂的事务处理与插件扩展。此外, yum utils 、 dnf plugins core 等拓展插件,进一步增强了仓库管理、软件包清理等功能,为系统维护提供了更多便利。
与Yum/DNF类似的管理工具还包括:

 Debian/Ubuntu使用的APT(Advanced Package Tool),通过 apt get 、 apt 命令管理 .deb 包,就像为Debian系系统量身定制的软件管理助手。
基于RPM的原始工具 rpm ,提供低层级的包安装与查询,是构建软件管理大厦的基石。
Arch Linux的Pacman工具,以简洁高效著称,能快速完成软件的安装、更新与卸载。
Fedora的TDNF(Tiny DNF),针对资源受限环境优化,保持与DNF的命令兼容性,在资源紧张的情况下也能稳定发挥作用。

2. 核心功能
 


Yum与DNF均支持软件源配置( /etc/yum.repos.d/ 目录下的 .repo 文件),通过定义官方仓库或第三方源,实现自动化依赖处理。例如,安装Apache服务时,工具会自动解析并安装 httpd 、 mod_ssl 等依赖包,如同一位贴心的助手,无需用户手动操心复杂的依赖关系。
 
同时,两者均支持插件扩展。如 yum cron 实现定时更新,就像设置了一个自动更新的闹钟,让系统时刻保持最新状态; dnf automatic 简化自动化运维流程,减少了人工干预,提高了运维效率。
 
与APT相比,Yum/DNF在处理复杂依赖时更注重稳定性,如同一位沉稳的长者,在复杂情况下也能做出可靠决策;而Pacman则强调轻量级与滚动更新机制,各有技术优势,满足不同用户的需求。

 下载操作实例

离线下载软件包(不安装)


yum install --downloadonly --downloaddir=/tmp/packages httpd  # Yum(CentOS 7及以下)  

dnf download --resolve nginx --destdir=/opt/offline_packages  # DNF(CentOS 8+)  

安装本地 RPM 包

bash

dnf localinstall /tmp/packages/*.rpm -y  # 自动处理依赖  


(二)、文件与目录操作
 


1. 文件查看与列表


 
 ls -l 命令以长格式展示文件与目录信息,每行输出包含7大核心字段:
 
文件类型与权限(如 -rw r-r-- 表示普通文件,所有者可读可写,其他用户仅可读,就像给文件贴上了详细的权限标签)。
硬链接数、所有者、所属组、文件大小、修改时间及文件名。
 
结合 ls -a (显示隐藏文件,如同揭开隐藏文件的神秘面纱)、 ls -h (以易读格式展示文件大小,让文件大小一目了然),可快速定位与分析系统文件,帮助用户全面了解文件的各种属性。
 


2. 文件传输与复制

 
 scp 基于SSH协议实现安全文件传输,就像一位可靠的快递员,在不同主机之间安全地传递文件。
 
 

scp local_file user@remote:/path #将本地文件上传至远程主机。


 scp r :递归复制目录,适用于迁移整个项目文件夹,如同将整个项目打包搬运。
 -p 参数:保留文件时间戳与权限,确保复制后文件属性不变,保证了文件的完整性。
 -rp 组合参数:兼顾递归与属性保留,常用于备份重要数据,让数据备份更加可靠。
 
此外,通过 -P 指定端口(如 scp P 2222 ),可适配自定义SSH端口的远程服务器,增强了传输的灵活性。


 
3. 文件压缩与打包


 
 tar 命令不仅可以用于创建归档文件,还能实现多种格式文件的解压操作,具体如下:
 
 

1. 解压.tar文件

基本格式:

 tar -xvf file.tar 

其中 -x 表示提取文件, -v 表示显示详细信息, -f 用于指定要解压的文件名。例如,要解压名为 example.tar 的文件,可在终端中输入 tar -xvf example.tar 。
 

2. 解压.tar.gz文件


基本格式:

tar -zxvf file.tar.gz 

这里的 -z 表示使用 gzip 进行解压。例如,解压 example.tar.gz ,可执行 tar -zxvf example.tar.gz 。
 

3. 解压.tar.bz2文件


基本格式: 

tar -jxvf file.tar.bz2 

 -j 参数用于指定使用 bzip2 解压。比如,要解压 example.tar.bz2 ,可输入 tar -jxvf example.tar.bz2 。
 

4. 解压.tar.xz文件


基本格式:

 tar -Jxvf file.tar.xz 

 -J 表示使用 xz 解压。若要解压 example.tar.xz ,则使用 tar -Jxvf example.tar.xz 命令。
 

5. 解压到指定目录


格式:

 tar -xvf file.tar -C /path/to/directory 

通过 -C 参数可以指定解压后的文件存放目录。

例如

 tar -xvf example.tar -C /home/user/Documents

 会将 example.tar 解压到 /home/user/Documents 目录下。
 
在Windows系统中,若要解压 tar 文件,可以使用 7 Zip 、 WinRAR 等压缩软件,它们也支持 tar 格式文件的解压操作,通常只需在软件中打开 tar 文件,然后选择解压路径即可。
 
 tar 命令用于创建归档文件时,也有多种组合方式:
 
 

 tar -cvf archive.tar file1 file2 

将多个文件打包,就像把多个物品装进一个大箱子。
结合 gzip 压缩, tar -czvf archive.tar.gz :可生成 .tar.gz 格式文件,常用于软件发布与数据备份,让文件存储更加高效。

(二)文件与目录操作

1. 文件创建与删除(相对路径实例)

创建操作


touch docs/notes.txt         # 在当前目录下的docs子目录创建文件  

mkdir -p reports/2023/Q1     # 递归创建多级目录  

echo "v1.0" > version.txt    # 在当前目录创建版本文件  

实例:创建项目临时目录并生成配置文件

mkdir temp && cd temp        # 创建并进入临时目录  

touch config.ini             # 在temp目录下创建配置文件  

echo "[settings]" > config.ini  #创建一个名为 config.ini 的配置文件,并且把 [settings] 写入该文件

删除操作

rm docs/old_notes.txt        # 删除相对路径文件  

rm -r reports/2022           # 递归删除旧年度报告  

安全删除实践

# 创建带确认的删除别名  alias rm='rm -i' 
# 安全删除当前目录下所有 .bak 文件  rm *.bak  

2. 文件移动与重命名(相对路径实例)

mv draft.txt final/          # 将文件移动到同级目录

final/  mv final/report_v1.md final/report_v2.md  # 重命名文件  

mv logs/$(date -d 'yesterday' +%Y%m%d)* archives/  # 按日期归档日志  

实例:重构项目目录结构

# 原结构:src/main.py

# 新结构:bin/main.py  mkdir bin && mv src/main.py bin/  

3. 综合实例(相对路径工作流)

场景:处理项目临时文件并生成报告

# 创建临时工作区  mkdir -p temp/raw_data temp/processed  

# 模拟数据处理  cp data/sample.csv temp/raw_data/  

python scripts/process.py temp/raw_data/sample.csv temp/processed/result.csv  

# 生成报告  mkdir -p reports/$(date +%Y%m%d)  

pandoc templates/report.md -o reports/$(date +%Y%m%d)/summary.pdf  

# 清理临时文件  rm -r temp  

场景:版本控制提交流程

# 添加新文件到暂存区  git add docs/*.md  

# 提交指定目录更改  git commit src/ -m "优化核心算法"  

# 查看相对路径文件状态  git status README.md  

关键技巧

相对定位

./ 表示当前目录(如 ./scripts/run.sh)
../ 表示上级目录(如 ../config.ini)
../.. 表示上两级目录

路径导航

cd ../             # 返回上级目录

cd -               # 返回上次目录  

pwd                # 显示当前绝对路径  

安全实践

# 相对路径删除(避免误删根目录)  rm -r ./temp/      

# 明确指定当前目录下的temp  

脚本兼容性
在 Shell 脚本中使用相对路径时,建议先获取脚本所在目录:

SCRIPT_DIR=$(dirname "$0")  source "$SCRIPT_DIR/utils.sh"  

对比优势

绝对路径

相对路径

/home/user/docs/report.pdf

docs/report.pdf

需要完整路径信息

基于当前工作目录定位

移植性差(不同环境路径可能不同)

可在任意位置执行(依赖目录结构)

适合系统级操作(如 /var/log

适合项目内部操作(如 src/main

通过合理使用相对路径,可显著提升命令的灵活性和脚本的可维护性,尤其适用于项目开发、版本控制等场景。


(三)、系统服务与远程管理
 
 

1. SSH服务


 
SSH(Secure Shell)通过公钥加密实现安全远程登录,默认使用22端口,如同在网络中搭建了一座安全的桥梁。核心配置文件 /etc/ssh/sshd_config 可调整登录策略(如禁止root登录、限制IP访问),为系统安全增添多道防线。
 
在OpenEuler中,虽可使用Telnet或Rsync替代部分功能,但Telnet以明文传输数据,存在安全隐患,就像在不安全的道路上裸奔;Rsync侧重文件同步,缺乏完整交互能力。
 
相比之下,SSH通过设置免密登录(使用 ssh keygen 生成密钥对, ssh copy id 分发公钥),既提升安全性,又简化批量管理流程,广泛应用于集群运维场景,大大提高了管理效率。

防火墙管理与 Hadoop 免密实例

防火墙操作(以 firewalld 为例)

firewall-cmd --permanent --add-port=22/tcp  # 永久放行SSH端口  

firewall-cmd --reload  # 应用规则  

systemctl status firewalld  # 查看防火墙状态  

警告:生产环境严禁使用 systemctl stop firewalld 关闭防火墙!

Hadoop 集群免密登录流程

在 NameNode 生成密钥

ssh-keygen -t rsa -C "hadoop-nn"  # 生成密钥对  

执行后按回车,直到要输入密码

分发公钥至 DataNode

ssh-copy-id root@datanode1  # 假设主机名已解析  

ssh-copy-id root@datanode2  

权限加固

chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys  # 设置严格权限 

 
当两台虚拟机之间的免密密钥不同时的处理方法:
 
生成新的密钥对:在其中一台虚拟机上,执行 ssh keygen -t rsa 命令生成新密钥对。根据提示选择保存路径(默认位于用户目录下的 .ssh 文件夹),密码可留空。新生成的公钥( id_rsa.pub )和私钥( id_rsa )将用于后续认证,就像生成了新的身份钥匙。
分发公钥:可通过 ssh copy id 工具简化操作,命令格式为 ssh copy id -i ~/.ssh/id_rsa.pub user@remote_host ( user 为远程虚拟机用户名, remote_host 为IP或主机名)。若该工具不可用,可手动将公钥内容追加到远程虚拟机的 ~/.ssh/authorized_keys 文件中,需注意避免覆盖原有内容,确保公钥正确添加。
配置权限:确保两台虚拟机的 .ssh 文件夹权限为700( chmod 700 ~/.ssh ), authorized_keys 文件权限为600( chmod 600 ~/.ssh/authorized_keys ),防止密钥信息泄露或被非法修改,保障密钥的安全性。
测试连接:完成上述步骤后,使用 ssh user@remote_host 尝试免密登录。若仍需密码或报错,需检查密钥文件权限、 authorized_keys 内容是否正确,以及防火墙是否放行SSH流量(默认端口22),确保登录顺畅。
 

2. 服务管理
 


 systemctl 是systemd系统的核心管理工具,就像一个万能的遥控器,掌控着系统服务的运行。
 

 systemctl start httpd #启动Apache服务,让网站能够正常访问。
 systemctl enable #设置开机自启,确保服务在系统启动时自动运行。
 systemctl status #查看服务运行状态与日志输出,帮助用户了解服务的健康状况。


 
通过 systemctl list units 可列出所有服务单元,结合 systemctl isolate 切换系统运行目标(如 multi user.target 进入多用户模式),实现灵活的服务生命周期管理,让系统服务的管理更加便捷高效。
 
 

(四)、磁盘分区与管理


 
1. 分区基础
 


磁盘分区将物理硬盘划分为逻辑单元:
 
主分区最多4个,用于安装操作系统,如同为操作系统划分专属的房间。
扩展分区可划分多个逻辑分区,突破主分区数量限制,提供了更灵活的空间分配方式。
 
分区工具包括Windows的磁盘管理、Linux的fdisk/parted等。扩展分区作为容器,需进一步创建逻辑分区(如 /home 、 /var 挂载点)才能存储数据,常用于灵活分配磁盘空间,满足不同数据存储需求。

 
2. 分区工具(fdisk)
 


 fdisk 是Linux下经典的交互式分区工具,就像一个专业的磁盘规划师。
 
通过 fdisk -l 查看磁盘布局。
进入 fdisk /dev/sda 后,可使用 n 创建分区、 d 删除分区、 t 修改分区类型。例如,设置类型为82(Linux swap)用于虚拟内存,类型83对应Linux原生分区,类型EE标识GPT分区表。
 
操作时需谨慎,避免误删重要分区,建议提前备份数据,防止数据丢失造成损失。

实例(建议在操作之前做好快照,以防出意外

磁盘分区调整:从 Swap 分区迁移空间至数据分区

目标:从 /dev/sda3(Swap 分区)缩减 10GB 空间,分配给相邻的 /dev/sda2 数据分区。

核心步骤浓缩

步骤 1:关闭 swap 分区

在调整分区大小前,必须先禁用 swap 分区:

swapoff /dev/sda3

验证禁用结果

swapon --show

若无输出,则表示 swap 已成功禁用。

步骤 2:删除并重新创建分区(关键修正!)

警告:操作会删除数据,请提前备份!

启动分区编辑器:

fdisk /dev/sda

执行以下操作(按顺序输入命令):

p    # 查看当前分区表(确认分区布局)

d    # 删除分区

3    # 选择 /dev/sda3 (swap分区)

d    # 再次删除分区

2    # 选择 /dev/sda2 (根分区或数据分区)

# 创建新的 /dev/sda2 (扩大空间)

n    # 创建新分区

p    # 主分区

2    # 分区号2

[Enter]  # 起始扇区保持默认

+50G     # 结束扇区设置为 +50G (根据需要调整)

# 创建新的 /dev/sda3 (缩小swap)

n    # 创建新分区

p    # 主分区

3    # 分区号3

[Enter]  # 起始扇区保持默认

+2G      # 结束扇区设置为 +2G (swap建议2G-4G)

t    # 修改分区类型

3    # 选择分区3

82   # 设置为 Linux swap 类型

p    # 查看最终分区表(确认修改无误)

w    # 保存更改并退出

步骤 3:重新启用 swap 分区

格式化新的 swap 分区:

mkswap /dev/sda3

启用 swap 分区:

swapon /dev/sda3

验证启用结果

swapon --show

步骤 4:扩展文件系统

根据文件系统类型选择对应命令:

ext4 文件系统

resize2fs /dev/sda2

xfs 文件系统

xfs_growfs /

步骤 5:更新 fstab 配置(重要!)

确保系统重启后能正确挂载新分区:

nano /etc/fstab

检查并更新以下行(使用新分区 UUID):

plaintext

UUID=$(blkid -s UUID -o value /dev/sda2)  /   ext4   defaults   0 0

UUID=$(blkid -s UUID -o value /dev/sda3)  none swap   defaults   0 0

步骤 6:验证结果

重启系统后,检查分区大小:

df -h       # 查看文件系统空间

lsblk       # 查看块设备列表free -h     # 查看内存和swap使用情况

注意事项

  1. 数据安全:操作前务必备份重要数据!
  2. 操作顺序:必须先删除并重新创建分区,再调整文件系统。
  3. 扇区计算:示例中使用 +50G 等相对大小更安全,避免手动计算扇区。
  4. swap 建议:一般服务器 swap 大小为 2G-4G 即可。
  5. fstab 检查:更新后使用 mount -a 测试挂载配置。

如果遇到问题,可使用 LiveCD 或救援模式进行修复。

关键参数与计算

         扇区计算(512 字节 / 扇区):
        10GB = 10 × 1024 × 1024 × 1024 / 512 = 20971520 扇区

        文件系统兼容性

        ext4/xfs 支持在线扩展,swap 需重新格式化。

注意事项

  1. 数据备份:操作前对 sda2 和 sda3 进行完整备份(如 dd 克隆)。
  2. 分区相邻性:仅当 sda2 与 sda3 相邻时可直接调整,否则需借助工具移动分区(风险极高)。
  3. 系统分区操作:若 sda2 为根分区(/),建议在单用户模式或 Live CD 环境下执行。
  4. 工具选择:优先使用 parted 进行无损调整,避免 fdisk 手动计算扇区出错。

(五)、其他系统操作


 
1. 基础文件操作
 


 mv 命令兼具文件改名与移动功能:
 mv old_file new_file 实现重命名。
 mv file /new_path 转移文件位置,如同给文件搬家或改名。
 cp -r 递归复制目录,常用于备份数据,确保数据的安全性。
 ls -lha 组合参数可详细展示隐藏文件的权限、大小与时间戳,帮助排查系统问题,让隐藏文件的信息无处遁形。
 
这些命令相互配合,构成Linux文件管理的基础操作矩阵,为用户提供了便捷的文件管理方式。

 
2. 命令协同应用


 
在实际运维中,各项操作常需联动:
 
通过SSH免密登录远程服务器。
使用 scp 传输更新包。
借助 tar -zxvf 解压部署。
最后用 systemctl restart 重启服务生效。
 
这种流程化操作不仅提升效率,还体现了Linux系统模块化管理的核心理念。建议用户在实践中逐步积累经验,结合脚本自动化工具(如Shell、Ansible),进一步优化系统管理流程,实现更高效的系统运维。


(六)、结语


 
Linux系统的强大源于其高度灵活的工具生态。从包管理到磁盘分区,每项技术均承载特定的应用场景与设计哲学。通过深入理解这些操作的底层逻辑与协同关系,用户不仅能高效完成日常运维任务,更能在复杂场景中快速定位与解决问题。
 
在SSH免密登录的实践中,妥善处理密钥配置问题是保障远程管理安全、高效的关键。随着Linux在云计算、容器化等领域的持续演进,掌握这些核心技能将成为技术进阶的重要基石,助力用户在Linux技术领域不断前行,探索更多的可能。

你可能感兴趣的:(linux,运维,服务器)