Linux系统》Linux文件系统的介绍 linux文件系统类型有哪些
bigegpt 2024-10-12 06:04 11 浏览
一、Linux文件系统
1、文件系统简介
Linux系统的理念是:一切都是文件。 其实这个是Unix系统的哲学思想,而Linux是由Unix系统而来,所以也继承了这个思想:
Unix系统把一切资源都看作是文件,包括硬件设备。硬件所形成的文件,通常称为设备文件。这样用户就可以用读写文件的方式实现对硬件的访问,这样带来的优势也是显而易见的。Unix 权限模型也是围绕文件的概念来建立的,所以对设备也就可以同样处理了。
Linux文件系统的设计目的:就是用来存储文件和管理文件。Linux文件系统的文件是数据的集合,文件系统不仅包含着文件中的数据,而且还有文件系统的结构,Linux用户和应用程序看到的文件、目录、软连接及文件保护信息等都存储在其中。注意:操作系统是用来管理硬件和应用程序及其文件系统的,别弄混这个概念。
2、Linux文件系统的目录结构
Linux文件系统采用树状级结构图。因为树状结构图方便归类和整理,就好像图书馆的书一样,先进行大类分成不同的书架,在进行逐级细分,方便文件的查找和管理。
1)根目录 (/) 的意义与内容:
根目录是整个文件系统中最重要的一个目录,位于Linux文件系统目录结构的顶层。因为不但所有的目录都是由根目录衍生出来的, 同时根目录也与操作系统的开机、还原、系统修复等行为有关。
系统开机所需要的特定文件数据有:核心文件、开机程序、 函数库等等。如果系统出现错误,根目录也必须要包含有能够修复文件系统的程序才行。
因此FHS标准建议:根目录(/)所在分区应该越小越好, 且应用程序所安装的软件最好不要与根目录放在同一个分区内,保持根目录越小越好。 如此不但效能较佳,根目录所在的文件系统也较不容易发生问题。说白了,就是根目录和Windows的C盘一个样。因为越大的分区内你会放入越多的数据,如此一来根目录所在分区就可能会有较多发生错误的机会。
因为根目录与开机有关,开机过程中仅有根目录会被挂载, 其他分区则是在开机完成之后才会持续的进行挂载行为。因此根目录下与开机过程有关的目录, 就应该与根目录放在同一个分区里。这些目录分别是:/etc,/bin,/dev,/lib,/sbin。
下面对目录树进行一下介绍:
/:根目录,位于Linux文件系统目录结构的顶层。通常根目录下只存放目录,不存放文件,/etc,/bin,/dev,/lib,/sbin应该和根目录放置在一个分区中。
/bin,/usr/bin:该目录为命令文件目录,也称为二进制目录。包含了供系统管理员及普通用户使用的重要的linux命令和二进制(可执行)文件,包含shell解释器等。
/boot: 该目录中存放系统的内核文件和引导装载程序文件,/boot/vmlinuz为linux的内核文件,以及/boot/gurb。建议单独分区,分区大小100M即可。
/dev: 设备(device)文件目录,存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备(终端、磁盘驱动器、光驱及网卡等,包括字符设备和块设备)等,常用的是挂载光驱mount /dev/cdrom/mnt。
/etc: 系统配置文件目录,该目录存放系统的大部分配置文件和子目录,不建议在此目录下存放可执行文件。该目录下的文件由系统管理员来使用,普通用户对大部分文件有只读权限。
/home: 系统默认的用户宿主目录,新增用户账号时,用户的宿主目录都存放在此目录下,~表示当前用户的宿主目录。建议单独分区,并设置较大的磁盘空间,方便用户存放数据。
/lib,/usr/lib,/usr/local/lib:系统最基本的动态连接资源库,内核模块文件目录。几乎所有的应用程序都用到此资源库。/lib目录存放了所有重要的库文件,其他的库文件则大部分存放在/usr/lib目录下。
/lost+fount: 在EXT2或EXT3文件系统中,系统意外崩溃或意外关机时,产生的一些文件碎片放在这里。当系统重新启动时,fsck工具会检查这里,并修复已经损坏的文件系统。
/mnt,/media: mnt目录主要用来临时挂载文件系统,为某些设备提供默认挂载点。
/opt: 给主机额外安装软件所摆放的目录。
/proc: 此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间。
/root:系统管理员root的宿主目录,系统第一个启动的分区为/,所以最好将/root和/放置在一个分区下。
/sbin,/usr/sbin,/usr/local/sbin:放置系统管理员使用的可执行命令,如fdisk、shutdown、mount等。与/bin不同的是,这几个目录是给系统管理员root使用的命令,一般用户只能"查看"而不能设置和使用。
/tmp: 存放系统产生的临时文件,因此重要文件不要放在此目录下。
/srv: 服务启动之后需要访问的数据目录,如www服务需要访问的网页数据存放在/srv/www内。
/usr: 应用程序存放目录,/usr/bin 存放应用程序, /usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件,/usr/local 存放软件升级包,/usr/share/doc 系统说明文件存放目录。
/usr/share/man: 程序说明文件存放目录,使用 man ls时会查询/usr/share/man/man1/ls.1.gz的内容。建议单独分区,设置较大的磁盘空间。
/var: 放置系统执行过程中经常变化的文件,如随时更改的日志文件 /var/log。
/sys:这个目录其实跟/proc非常类似,也是一个虚拟的档案系统,主要也是记录与核心相关的资讯。 包括目前已载入的核心模组与核心侦测到的硬体装置资讯等等。 这个目录同样不占硬盘容量。
3、绝对路径与相对路径
在访问文件或目录时,会涉及到所谓的路径。我们根据写法的不同来分成绝对路径(absolute)与相对路径(relative)。
绝对路径:由根目录(/)开始写起的文件名或目录名称。例如 /home/hyxy/.bashrc;
相对路径:相对于你当前所在路径的写法。 不是以 / 开头的写法就属于相对路径的写法。
举例来说,你目前在 /home/hyxy 这个目录下, 如果想要进入 /var/log 这个目录时,可以怎么写呢?
cd /var/log --绝对路径写法
cd ../../var/log --相对路径写法。因为我们的位置是/home/hyxy里,所以要回到上一层(../)到达/home/里,然后再回到上 一层(../)到达根目录,此时才能看到/var,然后向里移动。
两个特殊的目录:
. :代表当前的目录,也可以使用 ./ 来表示;
.. :代表上一层目录,也可以 ../ 来代表。
4、文件类型
当我们使用命令“ll”查询文件属性时,我们会看到第一列是由10个字符组成的。而10个字符的第一个字符就表示文件类型。
现在,来看看Linux文件系统支持的文件类型:
-(f):普通文件
d:目录文件
b:块设备。就是一些储存数据,以提供系统存取的接口设备。例如你的一号硬盘的代码是 /dev/hda1。
c:字符文件。一些串行端口的接口设备,例如键盘、鼠标等等!
l:符号链接文件,分为软链接和硬链接。类似于windows系统的快捷方式。
p:管道文件,FIFO也是一种特殊的文件类型,它主要的目的是,解决多个程序同时存取一个文件所造成的错误。
s:套接字文件,socket。如启动一个MySql服务器时产生的一个mysql.sock文件。
查看文件类型的三种方法:
方法1:ls -l或者ll
方法2:file命令
方法3:stat命令
5、文件属性
当使用命令 ls -lih时,我们就会看到以下属性。
相关推荐
- Go语言泛型-泛型约束与实践(go1.7泛型)
-
来源:械说在Go语言中,Go泛型-泛型约束与实践部分主要探讨如何定义和使用泛型约束(Constraints),以及如何在实际开发中利用泛型进行更灵活的编程。以下是详细内容:一、什么是泛型约束?**泛型...
- golang总结(golang实战教程)
-
基础部分Go语言有哪些优势?1简单易学:语法简洁,减少了代码的冗余。高效并发:内置强大的goroutine和channel,使并发编程更加高效且易于管理。内存管理:拥有自动垃圾回收机制,减少内...
- Go 官宣:新版 Protobuf API(go pro版本)
-
原文作者:JoeTsai,DamienNeil和HerbieOng原文链接:https://blog.golang.org/a-new-go-api-for-protocol-buffer...
- Golang开发的一些注意事项(一)(golang入门项目)
-
1.channel关闭后读的问题当channel关闭之后再去读取它,虽然不会引发panic,但会直接得到零值,而且ok的值为false。packagemainimport"...
- golang 托盘菜单应用及打开系统默认浏览器
-
之前看到一个应用,用go语言编写,说是某某程序的windows图形化客户端,体验一下发现只是一个托盘,然后托盘菜单的控制面板功能直接打开本地浏览器访问程序启动的webserver网页完成gui相关功...
- golang标准库每日一库之 io/ioutil
-
一、核心函数概览函数作用描述替代方案(Go1.16+)ioutil.ReadFile(filename)一次性读取整个文件内容(返回[]byte)os.ReadFileioutil.WriteFi...
- 文件类型更改器——GoLang 中的 CLI 工具
-
我是如何为一项琐碎的工作任务创建一个简单的工具的,你也可以上周我开始玩GoLang,它是一种由Google制作的类C编译语言,非常轻量和快速,事实上它经常在Techempower的基准测...
- Go (Golang) 中的 Channels 简介(golang channel长度和容量)
-
这篇文章重点介绍Channels(通道)在Go中的工作方式,以及如何在代码中使用它们。在Go中,Channels是一种编程结构,它允许我们在代码的不同部分之间移动数据,通常来自不同的goro...
- Golang引入泛型:Go将Interface「」替换为“Any”
-
现在Go将拥有泛型:Go将Interface{}替换为“Any”,这是一个类型别名:typeany=interface{}这会引入了泛型作好准备,实际上,带有泛型的Go1.18Beta...
- 一文带你看懂Golang最新特性(golang2.0特性)
-
作者:腾讯PCG代码委员会经过十余年的迭代,Go语言逐渐成为云计算时代主流的编程语言。下到云计算基础设施,上到微服务,越来越多的流行产品使用Go语言编写。可见其影响力已经非常强大。一、Go语言发展历史...
- Go 每日一库之 java 转 go 遇到 Apollo?让 agollo 来平滑迁移
-
以下文章来源于GoOfficialBlog,作者GoOfficialBlogIntroductionagollo是Apollo的Golang客户端Apollo(阿波罗)是携程框架部门研...
- Golang使用grpc详解(golang gcc)
-
gRPC是Google开源的一种高性能、跨语言的远程过程调用(RPC)框架,它使用ProtocolBuffers作为序列化工具,支持多种编程语言,如C++,Java,Python,Go等。gR...
- Etcd服务注册与发现封装实现--golang
-
服务注册register.gopackageregisterimport("fmt""time"etcd3"github.com/cor...
- Golang:将日志以Json格式输出到Kafka
-
在上一篇文章中我实现了一个支持Debug、Info、Error等多个级别的日志库,并将日志写到了磁盘文件中,代码比较简单,适合练手。有兴趣的可以通过这个链接前往:https://github.com/...
- 如何从 PHP 过渡到 Golang?(php转golang)
-
我是PHP开发者,转Go两个月了吧,记录一下使用Golang怎么一步步开发新项目。本着有坑填坑,有错改错的宗旨,从零开始,开始学习。因为我司没有专门的Golang大牛,所以我也只能一步步自己去...
- 一周热门
- 最近发表
- 标签列表
-
- mybatiscollection (79)
- mqtt服务器 (88)
- keyerror (78)
- c#map (65)
- xftp6 (83)
- bt搜索 (75)
- c#var (76)
- xcode-select (66)
- mysql授权 (74)
- 下载测试 (70)
- linuxlink (65)
- pythonwget (67)
- androidinclude (65)
- libcrypto.so (74)
- linux安装minio (74)
- ubuntuunzip (67)
- vscode使用技巧 (83)
- secure-file-priv (67)
- vue阻止冒泡 (67)
- jquery跨域 (68)
- php写入文件 (73)
- kafkatools (66)
- mysql导出数据库 (66)
- jquery鼠标移入移出 (71)
- 取小数点后两位的函数 (73)