百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

Linux系统目录结构详解

sinye56 2024-11-23 22:15 2 浏览 0 评论

有时候,你是否时常在想,Linux的文件目录结构为什么会这样设计?这样设计的目的是为什么?以及各个文件目录都包含了哪些类型的文件?

Linux的文件目录为什么这样设计?

Linux文件目录结构的设计继承自Unix操作系统,而目前主流的类Linux操作系统大家熟知的有:Debian系列(Debian,Ubuntu,......), RedHat系列(RedHat红帽,CentOS,......)等等;你会发现,所有这些操作系统的目录结构基本就是这些,可能有精简和扩展,但都大同小异。

Linux目录结构设计的目的是为了什么?

一句话概括:为了确保系统的组织性能、高效性、安全性和可维护和扩展性

具体表现形式有如下几点:

1. 组织和分层结构

Linux文件系统采用层次化的目录结构,使得文件和目录的组织更加清晰和有序。各个目录有其特定的用途和规则,这有助于用户和管理员快速找到所需文件。

2. 标准化和一致性

Linux文件目录结构在不同发行版之间基本是保持一致的。这种标准化确保了软件开发者和系统管理员在不同系统上具有相似的工作环境,减少了学习曲线和管理复杂性。

3. 分离静态文件和动态文件

  • 静态文件: 例如二进制文件和库文件存放在/bin, /sbin, /lib, /usr/bin, /usr/sbin, /usr/lib等目录中。
  • 动态文件: 例如日志文件和临时文件存放在/var/log, /var/tmp, /tmp等目录中。

这种分离有助于优化系统性能,因为静态文件通常只读,而动态文件需要频繁读写操作。将它们分开存放可以减少磁盘碎片,提高读写效率。

4. 分离系统文件和用户文件

  • 系统文件: 存放在/etc, /usr, /bin, /sbin, /lib等目录中。
  • 用户文件: 存放在/home目录中。

5. 模块化和可扩展性

不同的目录存放特定类型的文件,例如:

  • /lib和/usr/lib:存放系统库文件。
  • /opt:存放可选的第三方软件包。
  • /srv:存放服务数据(如Web服务器文件)。

这种模块化设计使得系统可以方便地添加、移除或更新特定模块,而不会影响其他部分。

6. 权限管理

通过目录结构的设计,可以有效地管理文件和目录的访问权限。例如:

  • /root: 目录是超级用户的主目录,只有root用户有访问权限。
  • /home: 目录下的每个用户都有自己的子目录,其他用户无法访问。

这种权限管理机制提高了系统的安全性,防止未授权的访问和修改。

7. 高效的系统维护

  • 日志管理: /var/log目录集中存放系统和应用程序的日志文件,便于系统管理员查看和分析。
  • 缓存管理: /var/cache目录存放应用程序的缓存文件,提升程序性能,例如:减少重复下载。
  • 临时文件管理: /tmp目录用于存放临时文件,系统重启时自动清理,保证系统的整洁和稳定。

8. 简化备份和恢复

通过将系统文件和用户文件分离,可以更容易地进行系统备份和恢复。例如,只需要备份/home目录即可保存用户数据,而系统文件则可以通过重新安装操作系统恢复。

目录结构介绍:

  • /bin: 系统基本二进制执行文件,如ls,cp,rm
  • /boot: 启动加载器文件和内核镜像,如grub引导加载的配置文件和模块目录/boot/grub/
  • /dev: 设备文件,这些文件代表系统的设备,如磁盘、终端设备等,如/dev/sda,/dev/tty
  • /etc: 目录主要用于存放系统配置文件和子目录,如/etc/fstab,/etc/bashrc
  • /home: 用户主目录,使用useradd命令生成用户;如useradd jerry,就会在/home下生成一个jerry的目录
  • /media: 可移动媒体挂载点,如CD、USB驱动器;如/media/usb,/media/cdrom
  • /mnt: 临时挂载点,用于手动挂载文件系统;如/mnt/backup,/mnt/nfs_share
  • /opt: 用于第三方提供的预编译软件包;如/opt/cni,opt/containerd
  • /proc: 虚拟文件系统,包含内核和进程的信息;如/proc/{pid}/,/proc/cpuinfo
  • /root: 超级用户的主目录,包含其个人文件和配置文件;如/root/.bashrc,/root/.ssh
  • /run: 临时文件系统,用于存储系统启动后运行时的数据;如/run/pid/, /run/network/
  • /sbin: 专门存放系统管理员使用的可执行程序,如/sbin/iptables,/sbin/fdisk
  • /srv: 目录用于存放系统提供的服务相关的数据;如/srv/ftp,/srv/nfs
  • /sys: 一个虚拟文件系统,提供用户空间访问内核数据结构的接口;如/sys/block
  • /tmp: 临时文件目录,系统重启后会被自动删除
  • /usr: 二级层次的目录,包含用户程序和数据;如/usr/bin,/usr/lib,/usr/share
  • /var: 用于存储经常变化的数据文件的目录,如/var/log,/var/cache,/var/lib

/bin、/sbin、/usr/bin、/usr/sbin、/usr/local/bin说明:

  • /bin:存放系统启动和单用户模式下所需的基本命令;适用所有用户;包含操作系统最基本的命令;如 /bin/ls, /bin/cp, /bin/mv, /bin/cat
  • /usr/bin:存放多用户环境下的常用应用程序和用户命令;适用所有用户;通常是来自软件包管理器安装的程序;如 /usr/bin/python
  • /sbin:存放系统管理员使用的系统管理命令;通常仅限root用户或具有特权的用户;如系统管理和维护 /sbin/reboot,/sbin/ifconfig
  • /usr/sbin:存放系统管理员使用的较高级的系统管理命令;通常仅限root用户或具有特权的用户;如系统管理和维护 /usr/sbin/useradd
  • /usr/local/bin:存放本地编译和软件安装的相关命令;适用所有用户;通常指从源码编译安装的程序;如 /usr/local/bin/node

PS:现在许多主流的操作系统没有在严格单独区分/bin/和/usr/bin/,以及/sbin/和/usr/sbin/目录,而是将他们进行了符号链接处理,目的是为了简化和统一文件系统层次结构,降低系统维护复杂度,提高系统的一致性和兼容性。通过这种设计,Linux系统变得更易于管理、维护和使用,确保了现代操作系统的高效和灵活性。

/lib、/usr/lib、/lib64、/usr/lib64说明:

  • /lib:存放系统启动和运行所需的基本共享库
  • /usr/lib:存放用户空间应用程序和库的共享库
  • /lib64:存放64位系统启动和运行所需的基本共享库
  • /usr/lib64:存放64位系统用户空间应用程序和库的共享库

为什么需要区分这些目录?

在64位系统上,为了兼容32位应用程序,系统需要同时支持32位和64位的库文件。这就需要将32位和64位的库文件分开存放,以避免混淆和冲突。因此,使用/lib和/usr/lib存放32位库文件,使用/lib64和/usr/lib64存放64位库文件。

PS:同样我们会看到目前主流的操作系统没有严格区别/lib和/usr/lib,/lib64和/usr/lib64,而是将他们做了符号链接处理,目的也是为了简化和统一文件系统层次结构,降低系统维护复杂度,提高系统的一致性和兼容性。

总结

Linux文件目录结构的设计,通过组织性、标准化、模块化、权限管理和性能优化等多方面的考虑,实现了高效性。这个结构不仅提升了系统的运行效率,还简化了系统管理和维护工作,为用户和管理员提供了一个稳定、安全和易于操作的环境。

最后,关于系统运行的软件包安装位置的说明:

大致就存放在如下位置:

  • /opt/目录
  • /usr/local/目录下创建与软件包的文件夹
  • /home目录
  • /root根目录下创建的与软件包的文件夹

个人认为:

  • /opt:存放第三方预编译的软件包以及一些常用的二进制软件包
  • /usr/local:存放管理员自行编译和安装的软件包
  • /home:用于多用户协作时临时安装的用于测试的软件包,不建议生产环境中使用
  • 其他目录:这样就比较随意了,不建议采用接纳

相关推荐

Linux在线安装JDK1.8

首先在服务器pingwww.baidu.com查看是否可以连网然后就可以在线下载一、下载安装JDK1.81、在下载安装的同时做好一些准备工作...

Linux安装JDK,超详细

1、了解RPMRPM是Red-HatPackageManager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux...

Linux安装jdk1.8(超级详细)

前言最近刚购买了一台阿里云的服务器准备要搭建一个网站,正好将网站的一个完整搭建过程分享给大家!#一、下载jdk1.8首先我们需要去下载linux版本的jdk1.8安装包,我们有两种方式去下载安装...

Linux系统安装JDK教程

下载jdk-8u151-linux-x64.tar.gz下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.ht...

干货|JDK下载安装与环境变量配置图文教程「超详细」

1.JDK介绍1.1什么是JDK?SUN公司提供了一套Java开发环境,简称JDK(JavaDevelopmentKit),它是整个Java的核心,其中包括Java编译器、Java运行工具、Jav...

Linux下安装jdk1.8

一、安装环境操作系统:CentOSLinuxrelease7.6.1810(Core)JDK版本:1.8二、安装步骤1.下载安装包...

Linux上安装JDK

以CentOS为例。检查是否已安装过jdk。yumlist--installed|grepjdk或者...

Linux系统的一些常用目录以及介绍

根目录(/):“/”目录也称为根目录,位于Linux文件系统目录结构的顶层。在很多系统中,“/”目录是系统中的唯一分区。如果还有其他分区,必须挂载到“/”目录下某个位置。整个目录结构呈树形结构,因此也...

Linux系统目录结构

一、系统目录结构几乎所有的计算机操作系统都是使用目录结构组织文件。具体来说就是在一个目录中存放子目录和文件,而在子目录中又会进一步存放子目录和文件,以此类推形成一个树状的文件结构,由于其结构很像一棵树...

Linux文件查找

在Linux下通常find不很常用的,因为速度慢(find是直接查找硬盘),通常我们都是先使用whereis或者是locate来检查,如果真的找不到了,才以find来搜寻。为什么...

嵌入式linux基本操作之查找文件

对于很多初学者来说都习惯用windows操作系统,对于这个系统来说查找一个文件简直不在话下。而学习嵌入式开发行业之后,发现所用到的是嵌入式Linux操作系统,本想着跟windows类似,结果在操作的时...

linux系统查看软件安装目录的方法

linux系统下怎么查看软件安装的目录?方法1:whereis软件名以查询nginx为例子...

Linux下如何对目录中的文件进行统计

统计目录中的文件数量...

Linux常见文件目录管理命令

touch用于创建空白文件touch文件名称mkdir用于创建空白目录还可以通过参数-p创建递归的目录...

Linux常用查找文件方法总结

一、前言Linux系统提供了多种查找文件的命令,而且每种查找命令都具有其独特的优势,下面详细总结一下常用的几个Linux查找命令。二、which命令查找类型:二进制文件;...

取消回复欢迎 发表评论: