linux目录详解

手动整理。转载于:抖音不锈钢大铁锅

bin

cd /切换到根目录
image.png
bin(binary)二进制

  • 经常使用的命令都以二进制文件的形式保存在这个目录下
  • 可以想象成一间放满工具的房间
  • 这个目录下的所有文件不需要任何权限就可以执行
  • bin目录是系统启动后就可以直接使用的目录
  • 如果没有bin目录系统就可能无法正常运行

boot

当我们按下开机键,主板开始通电,计算机自带的BIOS检测到启动盘后就开始读取这个目录下的内核文件以及启动管理程序
image.png
在boot目录下我们可以看到这些文件和子目录

  • 排在第一的是内核文件
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aHcR7kiZ-1691940742492)(https://s2.loli.net/2023/08/13/HXvJ2bC5PNh4Iog.png)]
    我们打开这个文件,所看到的就是各种对内存,进程,驱动以及库函数等的详细配置
    image.png
    内核就像是小区里的物业,物业决定了小区资源的分配和管理,如果没有物业,小区就会失去秩序,系统也是一样

小到操作系统大到宇宙,任何被创造的东西,其本质就是创造秩序,内核之所以叫内核,就是因为它定义了一种秩序,所有在这个系统内的个体都将依赖这套秩序运行,否则将会陷入混乱

  • BIOS访问完内核文件后将从EFI中访问系统分区
  • 然后通过grub来引导系统启动
    grub定义了启动菜单的选项,超时时间,背景图片等信息
  • 有些系统还会有个grub2,它其实是grub的升级版
  • 剩下的是一些临时的镜像和符号表文件image.png[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iEC8BQoj-1691940742494)(https://s2.loli.net/2023/08/13/jZliaWpJFc31wMC.png)]比如这个镜像image.png
    就是为了在系统跑起来之前提供一个基本的环境来处理一些可能出现的问题,比如硬件检测,设备挂载,加密锁等等

dev

dev(device)设备、装置

比如你插入一块或多块硬盘吗,dev就会这样以sd加abcd字母的命名格式记录这些硬盘。例如sda就是接入的第一块硬盘,字母a作为序号,假如一块硬盘有多个分区的时候则以数字表示,比如sda1就是表示第一个分区

  • 硬盘只是一个典型的例子,事实上所有硬件设备的参数都将保存在这个目录下

home

家目录,当我们输入账号和密码,按下回车键后进入的就是home目录,这些文件夹是用于存放个人文件的,白色的这个是用于保存当前用户的所有设置image.png
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9dxmJeA7-1691940742495)(https://s2.loli.net/2023/08/13/vH2MsrAqcECDbGR.png)]
通常来说home目录不止一个用户,还可能保存其他普通用户的文件而root的家目录为/root

  • 比如用useradd命令创建一个新用户,这个用户也会产生一个专属的家目录,但是每个用户只能访问自己的家目录,而root用户则可以访问和修改所有用户的家目录image.png
  • 假如我们现在将root用户切换成普通用户张三,然后我们试图用张三去访问李四的目录就会提示没有权限image.png

etc

etc(etcetera)等等
据说在早期unix把各种零碎的文件都保存在这个目录下,因为没有比较准确的名字来概括这些文件,但如今认为应该叫setting设置的意思。为什么这么说呢,因为系统所有的设置项都是以文件的形式保存在这个目录下。

  • linux系统一切皆是文件。比如当你要设置你的网络时,你就需要打开你网卡的配置文件,对你的网卡进行设置
  • 除了网卡设置,我们一般用的还有passwd文件,用于管理被创建的用户[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ac3YAIWN-1691940742496)(https://s2.loli.net/2023/08/13/uGXEjCmPxlDJiRO.png)]
  • shadow文件,你可以在这里查看和修改所有的用户密码image.png
  • 跟windows一样,Linux也有host文件,也是在etc目录下image.png
  • 做开发运维的,还必不可少会用到定时计划任务[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qq1bjCQ2-1691940742497)(https://s2.loli.net/2023/08/13/72eIfLyDB1HPQUa.png)]

lib

lib(library)库、框架

  • lib目录也是一个很底层的目录,它保存着系统、程序、甚至硬件运行所依赖的库文件,比如当我们运行ls这个最简单的指令时,系统会首先访问etc目录下的缓存文件,因为这个文件配置了依赖库文件的路径。然后访问libseLinux库文件,这一步是为了检查用户的权限,确认权限后继续访问libcap文件,这个文件主要是定义所有linux系统中软件运行的POSIX国际标准。libacl是访问控制列表的相关功能。libc是C的标准库文件。libpcre是为了支持正则表达式的相关功能 image.png
  • 不管是软件还是硬件的驱动都需要调用lib64、lib目录下已经写好的程序image.png
  • lib目录的存在是为了防止你重复造轮子,也是为了系统更稳定更精简

usr

usr(unix software resource)unix软件资源目录

  • 乍一看好像见到了好多老朋友,但我们需要重新认识一下[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u8pEKuWA-1691940742498)(https://s2.loli.net/2023/08/13/ZP8giIplMReG4jm.png)]比如这个bin他保存的是一些我们安装软件时产生的指令。例如zip解压缩命令,wget命令,vim编辑命令等等。这也证明了usr叫软件资源目录,而根目录下的bin则是确保系统能正常操作的基本命令image.png

  • 这里的etc就是针对非系统应用的配置或者叫设置,注意关键词非系统应用

  • 当我们用apt命令来安装一个python库的时候这个python库文件就会保存到lib、lib64目录下非系统库

  • libexec 这个库里的文件不是被用户执行的,而是被程序调用的

  • image.png

mnt

mnt(mount)挂载
在linux中,当你插入u盘后,你需要通过lsblk -p来查看系统是否识别到了我们插入的u盘[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pk06fN3h-1691940742498)(https://s2.loli.net/2023/08/13/51pBuRPZcDorMiN.png)]
这里sda的三个分区sda123被挂载到了三个不同的目录/boot、SWAP、/。这里还有一块叫sdb的盘,就是我们插入的u盘,然而比如sdb1这个分区仅仅是作为一个设备被记录到dev这个目录。
这个时候我们需要将我们的u盘挂载到一个指定的地方。

  • 通常来说,存储设备我们一般会挂载到mnt这个目录,u盘是usb设备为了后期便于管理,我们先在mnt目录下创建一个专用目录统一存放,然后使用mount命令将dev目录下的sdb1这个分区挂载到刚才我们创建的usb目录,这个时候我们就可以进入usb目录查看我们的u盘文件
  • 我们可以挂载到任何地方,但mnt目录天生拥有最好的可读性,所以为了避免不必要的麻烦,大家都约定俗成的挂载到这个目录

var

var(variable)变量
在Linux中作为一个变量目录存在image.png系统或程序在运行的时候产生或者需要用到的文件都会被释放到这个目录下

  • 日志文件就会存放在这个log目录下
  • cache目录,系统和程序产生的缓存就临时存放在这里
  • run目录就有点像PC上的进程管理,保存的是程序运行时的状态和进程编号
  • lock目录则是记录某些已经正在使用的文件,将文件进行锁定,避免被多个程序同时使用
  • 每个发行版本或每个人安装的程序不同,var下面的子目录也会有所区别
  • var目录是不断变化的

proc

proc(process)进程
通过ps来查看系统进程是linux中最基础最常用的指令之一,这些进程信息就保存在proc目录下image.png为了内核对进程管理的访问速度和实时性,这个目录被保存到内存中,而不是硬盘里。像sys、dev、run等目录都被保存到内存中。简单来说,proc是一个伪目录。内核为我们定义了一个管理进程的虚拟文件系统,我们现在看到这些蓝色数字其实就是以每一个进程的ID命名的目录[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JCwRiTF5-1691940742499)(https://s2.loli.net/2023/08/13/ZahimvRFnbAsPY7.png)]
我们进入8922目录看看,image.png比如status就是记录8922这个进程的详细状态。environ是记录8922进程的环境变量。通过mem文件,可以定义这个进程内存占用大小。cmdline用来定义用什么命令来启动这个进程。
所有的这些文件在进程还没有启动的时候都是不存在的,只有在进程被启动后才会被内核动态生成,并分配到内存中。关机或者重启都会被清除

sbin

  1. sbin(system binary)系统二进制
    image.png
  2. 系统级和应用级
    根目录下的bin存放的是系统最基本的用户命令[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0ukdWBYb-1691940742500)(https://s2.loli.net/2023/08/13/5UJjelmEYOi1o3z.png)]它们有两个共同点
  • 操作这个系统所必须的基本命令
  • 所有的用户都能使用
    sbin存放的是一些权限敏感的命令,比如shutdown、重启reboot、进程控制init、修改运行极别runlevel等等
    image.png与bin不同的是,这些命令需要管理员权限才可以运行
  1. usr下的bin是一些应用需要的指令,比如远程登录指令SSH、vi文本编辑,文件解压缩tar、网络测试用的ping、用于C语言编译的gcc等等
  2. 系统必备但不是必须的就会保存到usr下的sbin中。比如打印机共享服务samba,邮件服务sendmail、web服务httpd、邮件访问imap、网络接口配置工具netconfig等等。
    • 这些也需要管理员权限来运行,它不是系统运行必须的指令,它只是系统必备的应用指令
      把不同的指令分开放,一是为了在系统启动的时候只需要加载需要的指令,二是可以在目录之间设置权限隔离,三是便于维护

link files软链接

解决一个简单朴素的问题:一个文件夹里面有一个文件,右边也有一个文件夹,希望访问右边这个文件夹的时候,也能访问这个文件,显然通过复制或者移动文件来实现是非常不优雅的,而软链接就是用来解决这种问题的。linux通过一种叫做符号链接的文件,在两个文件夹之间创建了一个隧道,让你能够在右边这个文件夹直接访问左边这个文件夹下的文件,而且不重复占用硬盘空间还能编辑以及被其他程序引用。

  • 当我们想要访问网卡的时候我们既然不能移动网卡文件的位置,那么我们就可以使用链接ln把网卡链接到我的家目录下image.png-s指定了我们创建链接的类型,(-symbolic link)软链接,不然默认创建的是硬链接。现在我们就可以用极短的路径访问我的网卡,就相当于windows下发送快捷方式到桌面[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vPq5k9mi-1691940742501)(https://s2.loli.net/2023/08/13/OCwkA6V2aKiWjH8.png)]~当前用户的家目录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值