Blog/content/linux-for-PC-2.md
2024-11-17 15:49:21 +08:00

8.3 KiB
Raw Blame History

+++ title = "Linux-For-PC(二):FHS与目录结构" date = 2023-07-21

[taxonomies] tags = ["Linux"] +++

前言 在Linux世界中Filesystem Hierarchy StandardFHS是一座引导我们进入系统核心的桥梁它定义了Linux系统中目录结构的规范与作用为我们提供了一张清晰的地图指引我们轻松管理和理解系统。本文将深入探讨FHS规范与Linux系统目录结构解释各个目录的用途与功能帮助我们更好地理解和利用Linux系统。

一.认识FHS

FHS是Filesystem Hierarchy Standard文件系统层次结构标准的缩写。它是一个定义了Linux系统中目录结构和各个目录作用的规范。FHS规定了Linux系统中各个目录的用途和预期内容以便确保不同Linux发行版之间的兼容性并使得用户能够更轻松地理解和管理系统。

FHS规范最初由Linux基金会Linux Foundation和自由软件基金会Free Software Foundation共同发布并经过多次修订和更新。该规范不仅对Linux系统本身有用也适用于其他类UNIX操作系统。

FHS规范定义了一些基本的目录如/bin、/boot、/dev等并规定了每个目录的作用和预期内容。这样做有助于系统管理员和开发人员更好地组织和管理文件系统并使得用户能够更轻松地找到所需的文件和数据。

二.常见目录结构

在刚刚由Windows切换至Linux时往往会对目录感到不解不知道安装的软件放在哪个目录之下

以下是对Linux系统目录结构的详细说明

  • /(根目录) 根目录是整个文件系统的起点包含了系统中所有其他目录和文件。在Linux系统中根目录被表示为/。
  • /bin二进制文件 /bin目录存放着一些最基本的系统命令如ls、cp、mv等这些命令通常被所有用户使用。
  • /boot引导文件 /boot目录存放着启动Linux系统所需的引导文件如内核映像vmlinuz、引导加载程序boot loader配置文件如GRUB配置文件等。
  • /dev设备文件 /dev目录包含了系统中所有设备的特殊文件如硬盘、键盘、鼠标等。在Linux中一切皆文件设备被抽象为文件通过/dev目录中的特殊文件来表示。
  • /etc配置文件 /etc目录包含了系统的配置文件如网络配置、用户账户信息、服务配置等。这些配置文件通常以纯文本的形式存在可以由系统管理员进行编辑和修改。
  • /home用户主目录 /home目录是系统中所有普通用户的主目录所在地每个用户通常都有一个对应的子目录用于存放用户的个人文件和数据。
  • /lib库文件 /lib目录存放着系统所需的共享库文件这些库文件包含了一些程序运行所需的函数和数据为程序提供了基本的支持。
  • /mnt挂载点 /mnt目录用于挂载临时文件系统如光盘、移动硬盘等。系统管理员可以将其他设备或文件系统挂载到/mnt目录下以便访问其中的文件和数据。
  • /opt可选软件包 /opt目录用于存放一些可选的软件包和应用程序这些软件包通常不属于Linux发行版的默认安装范围但可以被用户自行安装和管理。
  • /proc进程信息 /proc目录是一个虚拟的文件系统包含了系统运行时的各种进程信息和系统状态信息。用户可以通过读取/proc目录中的特殊文件来获取系统信息。
  • /sbin系统命令 /sbin目录存放着一些系统管理和维护命令这些命令通常只能由超级用户root执行用于系统的管理和维护。
  • /srv服务数据 /srv目录用于存放一些服务相关的数据文件如Web服务器的网站数据、FTP服务器的文件等。每个服务通常都会有一个对应的子目录。
  • /tmp临时文件 /tmp目录用于存放临时文件和临时数据这些文件通常在系统重启时会被删除。任何用户都可以在/tmp目录下创建临时文件。
  • /usr用户程序 /usr目录包含了系统中大部分用户可用的程序和文件如用户应用程序、共享库文件、文档等。它通常是系统的二级目录类似于Windows系统中的Program Files目录。
  • /var可变数据 /var目录用于存放系统运行时产生的可变数据如日志文件、邮件、缓存文件等。这些数据通常会随着系统的运行而不断变化。

注意NixOS不符合FHS标准

三.分区大小

对各个分区进行容量分配时,需要根据系统的实际需求和用途来进行规划。一般而言在安装引导时可以选择让程序自动分区。

  • 根目录(/根目录是整个文件系统的起点通常会分配较大的空间以确保系统和应用程序有足够的空间运行。建议分配至少20GB的空间给根目录。
  • /home目录/home目录用于存放用户的个人文件和数据因此需要根据用户数量和存储需求来进行容量分配。一般情况下建议为每个用户分配至少10GB的空间。
  • /var目录/var目录用于存放系统运行时产生的可变数据如日志文件、邮件、缓存文件等。根据系统的运行情况和日志文件的大小来进行容量分配一般建议分配10-20GB的空间。
  • /tmp目录/tmp目录用于存放临时文件和临时数据通常不需要分配太大的空间。建议分配至少1-2GB的空间给/tmp目录。
  • /boot目录/boot目录存放着启动Linux系统所需的引导文件通常只需要分配几百MB的空间即可。
  • Swap分区Swap分区是一种虚拟内存用于暂时存放不常用的内存数据。当系统内存不足时Linux会将一部分内存数据移动到Swap分区中以避免内存耗尽导致系统崩溃。Swap分区的大小通常与系统内存大小有关一般建议为系统内存的1.5-2倍。例如如果系统内存为4GB则建议设置Swap分区大小为6-8GB。

这里特别讲讲Swap分区

Swap分区可以通过以下几种方式实现

  • 交换分区Swap Partition创建一个独立的交换分区通常是一个专门的分区用于存放Swap数据。
  • 交换文件Swap File创建一个专门的文件用于存放Swap数据而不是创建独立的分区。这种方式更加灵活可以根据需要动态调整Swap的大小。
  • Swap大小Swap的大小应该根据系统的内存大小和使用情况来确定一般建议为系统内存的1.5-2倍。
  • Swap分区/文件的位置Swap分区/文件应该位于较快的存储介质上,以确保交换操作的效率。 Swap的优先级如果同时存在多个Swap分区/文件可以通过设置优先级来指定系统使用的Swap空间。

四.将 home 目录下的文件夹改为英文

可以使用 xdg-user-dirs-update 工具来更新用户目录为英文版本。你可以按照以下步骤进行:

  1. 编辑用户目录配置文件 打开或创建 ~/.config/user-dirs.dirs 文件,用文本编辑器编辑它:

    nano ~/.config/user-dirs.dirs
    
  2. 将目录名称更改为英文 在该文件中,你可以看到类似以下的条目:

    XDG_DESKTOP_DIR="$HOME/桌面"
    XDG_DOWNLOAD_DIR="$HOME/下载"
    XDG_DOCUMENTS_DIR="$HOME/文档"
    XDG_MUSIC_DIR="$HOME/音乐"
    XDG_PICTURES_DIR="$HOME/图片"
    XDG_VIDEOS_DIR="$HOME/视频"
    

    将这些路径改为英文,例如:

    XDG_DESKTOP_DIR="$HOME/Desktop"
    XDG_DOWNLOAD_DIR="$HOME/Downloads"
    XDG_DOCUMENTS_DIR="$HOME/Documents"
    XDG_MUSIC_DIR="$HOME/Music"
    XDG_PICTURES_DIR="$HOME/Pictures"
    XDG_VIDEOS_DIR="$HOME/Videos"
    
  3. 重命名现有的文件夹 手动将 home 目录下的文件夹重命名为英文版本:

    mv ~/桌面 ~/Desktop
    mv ~/下载 ~/Downloads
    mv ~/文档 ~/Documents
    mv ~/音乐 ~/Music
    mv ~/图片 ~/Pictures
    mv ~/视频 ~/Videos
    
  4. 应用更改 完成以上操作后,运行以下命令应用新配置:

    xdg-user-dirs-update
    

这样,home 目录下的文件夹就会改为英文,并且系统也会正确识别这些新的目录路径。