002-Linux目录结构


前言

本文针对工作中经常遇到的目录及其功能进行记录当作本人笔记,同时欢迎大家来阅读。


一、Linux目录结构视图

在这里插入图片描述

二、Linux目录功能

提示:这里只对我常用到的目录进行记录和解析。

/bin

通常包含了可执行的二进制文件。这些二进制文件是基本的系统管理工具和基本命令行工具。
记录一下在其他博客中看到的一些可能不对的说法,如果说的不对,希望可以评论指出。

  1. /bin目录一开始是没有包含在$PATH中的,本人用的openEuler 20.03 (LTS-SP1),输出$PATH没有发现/bin,当然你后期可以添加。
    在这里插入图片描述
  2. 当时用命令比如ls时,Linux会去$PATH中找对应的目录下有没有ls这个命令,如果没有,则提示-bash: ls: command not found,并不会直接去/bin目录下直接去找。感兴趣可以尝试使用export命令删除ls命令存在的目录。

/boot

这是CSDN的C知道告诉我的答案,感觉正确,哈哈哈。
/boot目录通常包含了启动系统所需的文件,如内核、启动加载程序、配置文件等。具体而言,/boot目录的功能如下:

  1. 存储内核文件:/boot目录是存放内核文件的地方,内核是操作系统的核心部分,负责管理计算机的硬件和软件资源。内核文件通常以vmlinuz或bzImage等格式存在于/boot目录中。
    在这里插入图片描述

  2. 存储引导加载程序:/boot目录也存储了引导加载程序(bootloader),它是启动Linux系统的第一道程序。引导加载程序可以是GRUB、LILO等,它会在系统启动时被加载到内存中,并负责将内核加载到内存中执行。在这里插入图片描述

  3. 存储配置文件:/boot目录还包含了一些系统启动和引导加载程序的配置文件,如grub.cfg等。在这里插入图片描述

/dev

包含了系统中所有的设备文件,包括硬件设备、输入输出设备、网络设备、虚拟设备等。在Linux中,所有的设备文件都被认为是文件,你可以像读/写普通文件一样读/写设备文件。设备文件通常是Linux下应用程序与硬件之间的桥梁,应用程序通过读写设备文件,实现与硬件的交互。

/dev 目录中的设备文件可以分为以下两类:

  1. 块设备文件:块设备是指能够按照固定长度的块进行读写的设备,如硬盘、U盘、SSD等。块设备通常可以通过文件系统进行格式化和挂载。

    /dev 目录下,块设备文件名通常以 sd(如 sdasdb)、hd(如 hdahdb)等前缀为标识,而后面的数字表示不同的设备序号。

  2. 字符设备文件:字符设备是指以字符为单位进行读写的设备,如鼠标、键盘、串口等。字符设备通常不能被格式化和挂载,也没有文件系统。

    /dev 目录下,字符设备文件名通常以 tty(如 tty1tty2)等前缀为标识,而后面的数字表示不同的设备序号。

需要注意的是,/dev 目录中的设备文件并不是真正的硬件设备文件,而是 Linux 内核通过驱动程序模拟出来的虚拟文件。

/etc

包含了配置文件,服务、开机运行的脚本等信息。比如:bashrc fstab host.conf hostname hosts netconfig os-release passwd profile 等。

/home

/home 目录是 Linux 系统中的一个特殊目录,在一个多用户的 Linux 系统中,每个用户都会有一个独立的家目录,即/home目录下的一个子目录。

/home 目录下,每个用户的目录都以其用户名作为名称,该目录存储着该用户的文件、文档以及个人设置等信息。例如,用户A的个人文件和设置存储在/home/A目录中,而用户B的个人文件和设置则存储在/home/B目录中。

刚刚安装好的 Linux 系统中,/home 目录通常是空的,只有root用户拥有该目录下的写权限。当你创建新用户时,系统会自动创建该用户的家目录,并将其设置为该用户的默认工作目录。

/home 目录通常用于用户文件和配置的管理,也是可持续化存储用户数据的一种方式。用户可以在自己的家目录中创建自己的文件夹,存放自己的文件和数据,并根据需要设置相应的权限,以便掌握对文件的访问和修改控制权。此外,程序也可以使用用户家目录下的某些文件来存储一些配置信息,以备在下次登录时或程序启动时使用。

总之,/home 目录是 Linux 系统中用于存储用户文件和配置信息。它为 Linux 系统中的多用户功能提供了基础,让用户可以在同一系统中同时使用不同的账户和配置信息。

/lib

/lib目录是Linux系统中的一个非常重要的目录,包含了许多与系统和各种应用程序相关的重要的库文件,这些库文件被编译成可共享的对象文件,是许多程序和库所依赖的文件。

/lib目录中,我们可以看到很多以类似lib*.so*的命名方式的文件。这些文件通常是共享库(动态链接库)文件,即多个程序共享使用的某种固定的代码逻辑。它们包括各种常用的代码库,如数学库、I/O库、网络库等,不同的编程语言也有它们自己的库文件,比如 gcc 的库文件就会被放在/lib/gcc/下面。

在这里插入图片描述

此外,在/lib目录下还包含了一些内核模块(drivers)的可执行二进制文件,这些模块是 Linux 内核中某些设备的驱动程序模块,可以被动态地链接到内核中。

/media

/media 目录是 Linux 系统中的一个特殊目录,主要用于挂载可移动设备,如 USB 闪存、一般的 U 盘、SD 卡、DVD-ROM 和其他可移动设备。

当你插入一个可移动设备时,通常会自动在/media目录下创建一个与设备名称相对应的子目录,并将设备挂载到该目录下,以便用户可以访问设备中的内容。当设备被拔出时,该目录会被卸载并删除。

举个例子(一般有图形化界面的系统才会自动挂载移动设备),假如你将一个 USB 闪存插入 Linux 系统中,现在该设备名为 /dev/sdb,Linux 会自动将该设备挂载到/media/usb0(或其他以设备名称为名的目录中),你就可以通过浏览 /media/usb0 目录来访问该设备中的文件。

需要注意的是,当你使用 mount 命令手动挂载设备时,如果设备挂载在 /media 目录下,你需要手动创建一个子目录,并将设备挂载在该目录下。否则,你可能会覆盖系统自动在 /media 目录下创建的设备目录,导致数据不可访问。

/opt

一般我都把软件装在/opt下面。
/opt 目录是 Linux 系统中的一个特殊目录,用于安装和存储第三方应用程序、组件和依赖库,它是一些大型的独立软件包的默认安装位置。

/proc

/proc 目录是 Linux 系统中的一个特殊目录,用于存储运行中的进程信息和系统信息,它并不是一个真实的文件系统,而是一个虚拟文件系统。

/proc 目录下,你可以看到以数字命名的很多子目录,这些数字实际上是系统中每个进程的唯一标识符(PID)。每个 PID 目录下都有一个 status 文件,该文件包含了该进程的状态信息,如进程 ID、进程状态、内存占用情况等。

此外,在 /proc 目录下还有许多其他有用的文件和目录,比如:

  • cpuinfo:记录了系统当前 CPU 信息;
  • meminfo:记录了系统当前内存使用情况;
  • loadavg:记录了系统的负载情况;
  • filesystems:记录了系统当前支持的文件系统;
  • uptime:记录了系统的运行时间等。

对于管理员和开发者来说,/proc 目录是非常有用的一个调试和分析工具。你可以通过检查 status 文件和其他一些信息,了解每个进程正在做的事情,查看系统资源的使用情况,以及了解其他系统工作和状态的相关信息。

在这里插入图片描述

/root

/root 目录是系统的超级管理员(root)的主目录。在 Linux 系统中,root 账户是具有完全的系统管理权限并拥有所有权利的账户,它是系统的最高管理员。

/root 目录包含了 root 用户的个人文件和配置文件,包括一些重要的配置文件、SSH 私钥和其他系统管理工具。和普通用户的家目录 /home 不同,/root 目录是一个系统级别的目录,在一般情况下普通用户是无法访问和修改该目录下的任何文件的。

/root 目录包含了许多常见的文件和目录,包括 .bashrc 表示 Bash shell 的配置文件、.profile 表示系统环境变量的配置文件以及一些其他的系统配置文件。当系统需要读取 root 用户的个人文件或者目录时,通常会直接引用 /root

在这里插入图片描述

/sbin

/sbin 目录包含了一些供系统管理员使用的系统管理工具和命令,如系统启动、关机、硬件配置等。

/sbin 目录中,你可以找到一些常见的系统管理工具和命令,比如 shutdownrebootifconfigroute 等。这些工具和命令通常被用于对系统进行配置、管理和维护,只有系统管理员或者具有特殊权限的用户才能够调用这些命令。

需要注意的是,/sbin 目录中的命令和工具通常是需要超级用户权限才能够执行的,因此一般用户是无法访问到该目录下的文件。通常情况下,如果你需要执行一个 sbin 目录下的命令,你需要使用 sudo 命令来获取管理员权限,或者使用 su 命令切换到 root 用户。

我在Linux系统中创建了一个yuqilong用户,然后让yuqilong用户使用ifconfig命令,会提示:bash: ifconfig: command not found,切换到root用户则可以正常输出。

在这里插入图片描述

/tmp

/tmp 目录用于存放临时文件和临时目录。这些文件和目录通常只在特定的任务或者会话期间使用,不需要保存到系统中,因此经常需要清空 /tmp 目录以释放磁盘空间。

/tmp 目录中,你可以存储各种临时文件,包括日志文件、缓存文件、临时副本等等。有些应用程序可能也会将它们的一些临时文件存储在 /tmp 目录中。因此,/tmp 目录是一个非常活跃且需要定期清理的目录。

需要注意的是,/tmp 目录是一个公共目录,任何用户都可以在其中存储临时文件。这也意味着,/tmp 目录的权限通常设置为 777,任何人都可以读取、写入和执行其中的文件。出于安全考虑,一些 Linux 系统管理员会根据自己的需求和策略对 /tmp 目录进行限制和保护。

/usr

/usr 目录包含了系统的许多应用程序、库文件、文档和资源文件。在 /usr 目录中,你可以找到以下一些常见的目录:

  • /usr/bin: 存放系统管理员和用户使用的二进制可执行文件;
  • /usr/sbin: 存放系统管理员使用的二进制可执行文件,需要 root 权限才能访问;
  • /usr/lib: 存放共享库文件,即许多程序共用的代码库;
  • /usr/share: 存放应用程序的资源文件、文档等共用数据文件;
  • /usr/local: 存放本地安装的软件及其相关的资源文件、文档等共用数据文件;
  • /usr/include: 存放头文件,包含了开发应用程序所需的一些标准 C/C++ 头文件。

这里说一下/usr目录和/opt目录的区别,个人观点:/usr是系统软件默认安装目录,/opt是软件可选安装目录。

/var

/var 目录用于存储变化的文件数据,包括日志文件、邮件、打印机队列、缓存、临时文件、数据库文件等等。该目录下的文件通常是不断变化和写入的,因此它的大小和内容是随着时间而变化的。

/var 目录下包含了一些常见的目录:

  • /var/log:存放日志文件,包括系统日志、安全日志、应用程序日志等;
  • /var/spool:存放打印机队列、邮件队列等;
  • /var/cache:存放缓存文件,包括软件包缓存文件和其他应用程序的缓存文件等;
  • /var/run:存放运行时数据,如 PID 文件(记录运行中进程的 ID 号)等;
  • /var/tmp:存放临时文件,与 /tmp 目录相似,但该目录下的文件较为持久。

总结

本文只是针对一些通用目录的功能进行讲解,根据Linux发行版的不同,目录可能会略有不同。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

于齐龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值