诠释Linux 中“一切都是文件”概念和相应的文件类型
作者:网络转载 发布时间:[ 2016/8/24 11:40:19 ] 推荐标签:操作系统 Unix 进程
在Unix和它衍生的比如Linux系统中,一切都可以看做文件。虽然它仅仅只是一个泛泛的概念,但这是事实。如果有不是文件的,那它一定是正运行的进程。
要理解这点,可以举个例子,您的根目录(/)的空间充斥着不同类型的Linux文件。当您创建一个文件或向系统传输一个文件时,它会在物理磁盘上占据的一些空间,而且是一个特定的格式(文件类型)。
虽然Linux系统中文件和目录没有什么不同,但目录还有一个重要的功能,那是有结构性的分组存储其它文件,以方便查找访问。所有的硬件组件都表示为文件,系统使用这些文件来与硬件通信。
这些思想是对Linux中的各种事物的重要阐述,因此像文档、目录(MacOSX和Windows系统下称之为文件夹)、键盘、监视器、硬盘、可移动媒体设备、打印机、调制解调器、虚拟终端,还有进程间通信(IPC)和网络通信等输入/输出资源都是定义在文件系统空间下的字节流。
一切都可看作是文件,其显著的好处是对于上面所列出的输入/输出资源,只需要相同的一套Linux工具、实用程序和API。
虽然在Linux中一切都可看作是文件,但也有一些特殊的文件,比如套接字和命令管道。
Linux文件类型的不同之处?
Linux系统中有三种基本的文件类型:
· 普通/常规文件
· 特殊文件
· 目录文件
· 普通/常规文件
它们是包含文本、数据、程序指令等数据的文件,其在Linux系统中是常见的一种。包括如下:
· 可读文件
· 二进制文件
· 图像文件
· 压缩文件等等
特殊文件
特殊文件包括以下几种:
块文件(block):设备文件,对访问系统硬件部件提供了缓存接口。它们提供了一种通过文件系统与设备驱动通信的方法。
有关于块文件一个重要的性能是它们能在指定时间内传输大块的数据和信息。
列出某目录下的块文件:
Shell
#ls-l/dev|grep"^b"
输出例子
brw-rw----1rootdisk7,0May1810:26loop0
brw-rw----1rootdisk7,1May1810:26loop1
brw-rw----1rootdisk7,2May1810:26loop2
brw-rw----1rootdisk7,3May1810:26loop3
brw-rw----1rootdisk7,4May1810:26loop4
brw-rw----1rootdisk7,5May1810:26loop5
brw-rw----1rootdisk7,6May1810:26loop6
brw-rw----1rootdisk7,7May1810:26loop7
brw-rw----1rootdisk1,0May1810:26ram0
brw-rw----1rootdisk1,1May1810:26ram1
brw-rw----1rootdisk1,10May1810:26ram10
brw-rw----1rootdisk1,11May1810:26ram11
brw-rw----1rootdisk1,12May1810:26ram12
brw-rw----1rootdisk1,13May1810:26ram13
brw-rw----1rootdisk1,14May1810:26ram14
brw-rw----1rootdisk1,15May1810:26ram15
brw-rw----1rootdisk1,2May1810:26ram2
brw-rw----1rootdisk1,3May1810:26ram3
brw-rw----1rootdisk1,4May1810:26ram4
brw-rw----1rootdisk1,5May1810:26ram5
...
字符文件(Character):也是设备文件,对访问系统硬件组件提供了非缓冲串行接口。它们与设备的通信工作方式是一次只传输一个字符的数据。
列出某目录下的字符文件:
Shell
#ls-l/dev|grep"^c"
输出例子
crw-------1rootroot10,235May1815:54autofs
crw-------1rootroot10,234May1815:54btrfs-control
crw-------1rootroot5,1May1810:26console
crw-------1rootroot10,60May1810:26cpu_dma_latency
crw-------1rootroot10,203May1815:54cuse
crw-------1rootroot10,61May1810:26ecryptfs
crw-rw----1rootvideo29,0May1810:26fb0
crw-rw-rw-1rootroot1,7May1810:26full
crw-rw-rw-1rootroot10,229May1810:26fuse
crw-------1rootroot251,0May1810:27hidraw0
crw-------1rootroot10,228May1810:26hpet
crw-r--r--1rootroot1,11May1810:26kmsg
crw-rw----+1rootroot10,232May1810:26kvm
crw-------1rootroot10,237May1810:26loop-control
crw-------1rootroot10,227May1810:26mcelog
crw-------1rootroot249,0May1810:27media0
crw-------1rootroot250,0May1810:26mei0
crw-r-----1rootkmem1,1May1810:26mem
crw-------1rootroot10,57May1810:26memory_bandwidth
crw-------1rootroot10,59May1810:26network_latency
crw-------1rootroot10,58May1810:26network_throughput
crw-rw-rw-1rootroot1,3May1810:26null
crw-r-----1rootkmem1,4May1810:26port
crw-------1rootroot108,0May1810:26ppp
crw-------1rootroot10,1May1810:26psaux
crw-rw-rw-1roottty5,2May1817:40ptmx
crw-rw-rw-1rootroot1,8May1810:26random
符号链接文件(Symboliclink):符号链接是指向系统上其他文件的引用。因此,符号链接文件是指向其它文件的文件,那些文件可以是目录或常规文件。
列出某目录下的符号链接文件:
Shell
#ls-l/dev/|grep"^l"
输出例子
lrwxrwxrwx1rootroot3May1810:26cdrom->sr0
lrwxrwxrwx1rootroot11May1815:54core->/proc/kcore
lrwxrwxrwx1rootroot13May1815:54fd->/proc/self/fd
lrwxrwxrwx1rootroot4May1810:26rtc->rtc0
lrwxrwxrwx1rootroot8May1810:26shm->/run/shm
lrwxrwxrwx1rootroot15May1815:54stderr->/proc/self/fd/2
lrwxrwxrwx1rootroot15May1815:54stdin->/proc/self/fd/0
lrwxrwxrwx1rootroot15May1815:54stdout->/proc/self/fd/1
Linux中使用ln工具可以创建一个符号链接文件,如下所示:
#touchfile1.txt
#ln-sfile1.txt/home/tecmint/file1.txt[创建符号链接文件]
#ls-l/home/tecmint/|grep"^l"[列出符号链接文件]
在上面的例子中,首先我们在/tmp目录创建了一个名叫file1.txt的文件,然后创建符号链接文件,将/home/tecmint/file1.txt指向/tmp/file1.txt文件。
管道(Pipe)和命令管道(Namedpipe):将一个进程的输出连接到另一个进程的输入,从而允许进程间通信(IPC)的文件。
命名管道实际上是一个文件,用来使两个进程彼此通信,像一个Linux管道一样。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11