以前看一个朋友的博客,其中有一句话很犀利:“Linux 下皆文件”,短短五个字就说出了文件系统在Linux下的重要性。在Linux操作系统中,它对一切资源的管理归根到底最后都是对文件的操作。
一.前言:
在原理课上,我们就知道操作系统的五大供能之一就是对文件的管理.
那么为什么要引入文件管理的功能呢,它的主要任务是什么呢?
我们先看看它出现的 背景吧
在现代操作系统中,要利用大量的程序和数据,由于内存容量有限,且不能长期保存,于是人们想出了把这些数据以文件的形式放在外存中,需要的时候再将它们调入内存-----从此就有了文件系统。它负责管理在外存上的文件,并把对存取,共享和保护等手段提供给用户。这样就方便了用户,保证了文件的安全性,还提高了系统资源的利用率。
1.从系统角度来看,文件系统是对文件存储器空间进行组织和分配,负责文件的存储并对存入的文件进行保护和检索的系统。从用户的角度看,文件系统的主要目的是实现了对文件的按名存取。
2.由于要存储大量的文件,所以如何对这些文件实施有效的管理呢------>所以人们又引入了目录,通过目录来对文件进行管理。
---------------------------------------------------
现在我们来看看Linux中如何实现文件系统的。
二.Linux中的文件系统
文件系统指文件存在的物理空间,Linux 系统中每个分区都是一个文件系统,都有自己的目录层次结构。Linux 会将这些分属不同分区的、单独的文件系统按一定的方式形成一个系统的总的目录层次结构。
在原理课中,我们知道系统是靠FCB来管理文件的,而具体到了Linux操作系统下时,它是靠index node来管理文件的。
1.Linux中的文件系统
1>Linux是一个安全的操作系统,它是以文件为基础设计的。从此处就可以看出“Linux下皆文件”。Linux中的文件子系统主要用于管理文件存储空间的分配,文件访问权限的维护,对文件的各种操作。
a.用户可以使用shell 命令对文件进行操作,但在功能上受到一定的限制。
b.程序员可以通过系统调用或C语言的库函数对文件进行操作。
2>Linux 文件主要包括两方面的内容:一是文件本身所包含的数据;另外就是文件的属性,也称为元数据,包括文件访问权限,所有者,文件大小,创建日期等。
3>目录也是一种文件,称为目录文件。目录文件的内容时该目录的目录项,目录项时该目录下的文件和目录的相关信息。当创建一个新目录时,系统将自动创建两个目录项:. 和..
我们可以用命令来体验一下它的实 现:
think@Ubuntu:~$ mkdir tiger
think@ubuntu:~$ ls -al tiger
drwxr-xr-x 2 think think 4096 2010-11-16 13:11 .
drwxr-xr-x 51 think think 4096 2010-11-16 13:11 ..
mkdir tiger 是创建一个tiger的目录 ,然后再用命令ls -al tiger来看一下tiger目录的详细信息。可以看见系统将 自动创建两个目录项:. 和 ..
(如果对ls 命令不熟悉的话可以看我的小白学Linxu之常见命令有具体解释 )
4>Linux 采用的是标准目录结构---树型结构无论操作系统管理几个磁盘分区,这样的目录树只
有一个(这样设计的原因是为了:有助于对系统文件和不同的用户文件进行统一管理)
Tiger-John说明:
我们大加熟知的windows操作系统它是有几个分区就有几个树目录。
例如:我们有C,D,E,3个盘,那么就有3个树目录。
5>在Linux安装的时候,安装程序就已经为用户创建了文件系统和完整而固定的目录组成形式,并指定了每个目录的作用和其中的文件类型。
a.我们还是从用命令体验以下把:
首先输入 cd /(切换到根目录下)
然后 在输入 ls (就可以看到Linux下一些主要的目录)
think@ubuntu:~$ cd /
think@ubuntu:/$ ls
bin etc initrd.img.old lost+found proc srv usr
boot home lib media root sys var
cdrom host lib32 mnt sbin think vmlinuz
dev initrd.img lib64 opt selinux tmp vmlinuz.old
b.现在看一下这些目录的功能吧
/bin 二进制可执行命令
/dev 设备特殊文件
/etc 系统管理和配置文件
/home 用户主目录的基点,比如用户user 的主目录就是/home/user 。
/lib 标准程序设计库,又叫动态链接共享库。
/sbin 系统管理命令,这里存放的是系统管理员使用的管理程序
/tmp 公用的临时文件存储点
/root 系统管理员的主目录
/mnt 用户临时安装其他文件系统的目录。
/proc 虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息。
/var 某些大文件的溢出区,例如各种服务的日志文件
/usr 最庞大的目录,要用到的应用程序和文件几乎都在这个目录下。
Tiger-John说明:
etc针对的是系统管理员。
home是针对的是我们用户。
dev存放是设备信息。
proc存放的是内核信息
usr存放的是系统调用
2.Linux中的文件分类
1>普通文件
计算机用户和操作系统用于存放数据、程序等信息的文件。一般都长期地存放在外存储器(磁盘、磁带等)中。常规文件一般又分为文本文件和二进制文件。
2>目录文件
Linux 文件系统将文件索引节点号和文件名同时保存在目录中。所以,目录文件就是将文件的名称和它的索引节点号结合在一起的一张表。目录文件只允许系统进行修改。用户进程可以读取目录文件,但不能对它们进行修改。
3> 设备文件
Linux 把所有的外设都当作文件来看待。每一种I/O 设备对应一个设备文件,存放在/dev 目录中,如行式打印机对应/dev/lp 文件,第一个软盘驱动器对应/dev/fd0 文件。
4> 管道文件
主要用于在进程间传递数据。管道是进程间传递数据的“媒介”。某进程数据写入管道的一端,另一个进程从管道另一端读取数据。Linux 对管道的操作与文件操作相同,它把管道做为文件进行处理。管道文件又称先进先出(FIFO) 文件。
5> 链接文件
又称符号链接文件,它提供了共享文件的一种方法。在链接文件中不是通过文件名实现文件共享,而是通过链接文件中包含的指向文件的指针来实现对文件的访问。使用链接文件可以访问常规文件,目录文件和其它文件。
那么具体在Linux中一个文件的类型都底是怎么表示的呢
来实践以下看看:
在终端输入命令: ls -l 可以看一下
--------------------------------------------------------------------------------------------
think@ubuntu:~$ ls -l
drwx------ 19 think think 4096 2010-10-30 11:28 code
-rwxr-xr-x 1 think think 1152 2010-11-01 10:22 deadlock.c
lrwxrwxrwx 1 root root 33 2010-09-17 02:23 initrd.img.old -> boot/initrd.
crw-rw-rw- 1 root root 1, 5 2010-11-16 08:59 zero
brw-rw---- 1 root disk 8, 0 2010-11-16 08:59 sda
-----------------------------------------------------------------------------------
Tiger-John 说明:
第一字母就表示了这个文件的类型:
d: 表示目录
- :表示文件
l:表示链接文件
b:表示块设备文件
c: 表示字符设备文件
p: 表示管道文件
关于后面字母表示的具体含义请大家LinuxIDC.com的下一页文章