Linux 文件系统初步

     在Linux系统中,如果我们想要知道一个文件的具体信息,那么最简便的方法自然就是ls命令了。如下图所示:当在shell输入命令"ls -l old"时,在下方就会显示出关于文件old的一些

信息.下面就从左到右逐步分析每部分输出所代表的具体含义。其中输出的第一部分包含十个字符,其中第一个字符用于表示文件的类型。那么我们就先来说说在UNIX/Linux系统中的文件类型好了。

文件类型:

其实在Linux系统中主要就是两种文件,一种是常规文件(regular file),另一种就是目录(directory)。开始可能觉得很奇怪,目录怎么会是文件呢?其实目录只是存储了该目录下的文件或子目录的名称和对应i-node(包含了基本上关于对应文件所有信息的结构)的编号的一个特殊文件而已。当然,除了上述的两种文件类型,还有:块设备文件(Block special device),字符设备文件(character special device),FIFO(管道),Socket(套接字),Symbolic
link(符号链接)这几种文件类型。具体的在这里就不展开了。如在上图中第一位为‘-’,则表示该文件为常规文件,其他类型的文件通过该位显示的字符应该也很容易判断出来。

文件权限:

下面我们就来看看后9位字符代表的意思。说是9位,其实我们把它们分成3组,每组代表的意思是差不多的。我们都知道Linux系统是一个多用户的系统,所以对于一个文件而言,可能有除创建者以外的其他人想要对文件进行操作。这时我们就有必要对文件的操作权限进行设置了。这三组字符从左到右针对的对象依次是文件的创建者(user),文件创建者的同组成员(group),除以上二者以外的其他用户(others)。而每组的3个字符,从左到右依次显示为  rwx  其中r代表读的权限,w代表写的权限,x代表可执行的权限。如下图所示,我想读一个名字叫new的文件,但是它的所有权限都被屏蔽了。当我输入命令:
more new的时候,shell就会提示权限不足。对于其他操作也可类推获得。但是在Linux中有一个神一般存在的用户,就是传说中的root或者叫超级用户(superuser)。它有对系统的一切权限,可以对任意文件进行操作,所以之前提到的那些限制对它是没有效果的。

链接数:

再往右显示的数字1代表的是,该文件有1个链接。其中链接又分硬链接(hard link)和符号链接(symbolic link)两种类型。此处显示的应为硬链接数。其中硬链接是直接执行文件对应的inode的,而符号链接则没有,它只是包含了所链接文件的位置信息,类似于windows中的快捷方式。需要注意的是,很多时候,你所谓的删除一个文件,只是删除了该文件的一个链接。想要真正删除一个文件的内容,必须满足两个条件:1.文件的链接数为0。2.没有进程打开该文件。

UID和GID:

前面已经说过了,一个文件肯定是由一个用户创建的。那么自然在文件信息中需要保存,该文件的创建者,也就是user-ID简称UID,同时还有该创建者所在组的ID,group-ID,简称GID。所以接下来显示的monster monster就分别对应了文件创建者monster和monster所在的组。

文件大小:

然后显示的就是对应文件的大小了,例子中的文件大小显示的是0,单位是字节。需要注意的是:如果文件的类型是字符链接,那么它的大小就是它所执行的文件的文件名的字符数。

文件时间:

接下来显示的就是文件时间了。对于一个文件,一般保存了3个时间:1.st_mtime,上一次文件修改的时间(modification time),2.st_atime,上一次文件打开的时间(access time)3.st_ctime,上一次文件状态改变的时间(changed status time)。其中最令人困惑的肯定是st_mtime和st_ctime,文件修改了,那状态不就改变了么?状态改变,那肯定就是文件修改了啊?其实不是这样的,第一个st_mtime指的是文件内容的修改,而st_ctime的状态指的是文件对应的inode中存储的
信息的改变,例如各种权限啊,UID,GID等等。所以说是完全不一样的。

文件名:

显示在最后的自然就是文件名,对于文件名想说的是,它并不保存在文件对应的inode当中,而是保存在对应的目录文件中。这就引发了一个非常有意思的现象,就是我们想要删除一个文件的时候,我们并不需要该文件的任何权限,而是需要该文件所在目录的写权限和执行权限。因为我们删除一个文件就是要将减少该文件对应inode的链接数,并将文件名从对应的目录文件中去掉。

PS:以上就是通过命令 ls -l filename所引申出来的关于Linux文件系统的一些基本知识了。当然还有很多的细节是没有涉及的,文件系统也远远没有那么简单。如果有什么错误,请大家及时指出来,可以让我改正。想讨论的同学也可以评论留言。(*^__^*) 嘻嘻……

参考数目:《UNIX环境高级编程》

时间: 2024-10-11 12:12:43

Linux 文件系统初步的相关文章

linux文件系统初步

安装后系统要做的操作 1.查看远程连接ssh(secure shell)服务的22端口是否开启(有:22) [[email protected] ~]# ss -tnl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 :::22 :::* LISTEN 0 128 *:22 *:* LISTEN 0 100 ::1:25 :::* LISTEN 0 100 127.0.0.1:25 *:* 2.开启网卡

4.Linux命令与文件系统初步

一.查看命令历史及相关信息        bash查找命令的方式:            外部命令查找:$PATH            [[email protected]_basic ~]# echo $PATH            /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin查找路径是从左往右查找的,            如果说刚要执行的命令是在/root/bin则要一各路径一个路径去查找,

linux 文件系统笔记

文件格式: windows:PE linux:  ELF 文件系统: rootfs FHS:规定linux应该创建哪些目录 /下的目录结构: /boot: 系统启动相关的文件,如内核,initrd,以及 grub(bootloader) /dev :设备文件(例如:光盘,cdrom) 类型: 块设备:随机访问, 数据块 字符设备:线性访问, 以字节为单位 设备号:主设备号(major),次设备号(minor) /etc:  配置文件(绝大多数为纯文本格式) /home: 用户的家目录,默认为/h

【转】LINUX文件系统剖析

引自:http://www.ibm.com/developerworks/cn/linux/l-linux-filesystem/   在文件系统方面,Linux? 可以算得上操作系统中的 "瑞士军刀".Linux 支持许多种文件系统,从日志型文件系统到集群文件系统和加密文件系统.对于使用标准的和比较奇特的文件系统以及开发文件系统来说,Linux 是极好的平台.本文讨论 Linux 内核中的虚拟文件系统(VFS,有时候称为虚拟文件系统交换器),然后介绍将文件系统连接在一起的主要结构.

Linux文件系统

文件系统与目录结构 文件系统 1.文件和目录被组织成一个单根倒置数结构 2.文件系统从根目录下开始,用"/"表示 3.根文件系统(rootfs):root filesystem 4.文件名称区分大小写 5.以.开头的文件为隐藏文件 6.路径分隔符:/ 7.文件的两类数据: 元数据(metadata)和 数据(data) 8.文件系统分层结构:LSB (Linux Standard Base) 9.FHS(Filesystem Hierarchy System) 文件名规则 1.文件名最

linux文件系统索引节点浅析

索引节点,Inode是Index Node的缩写,存储于文件系统上的任何文件都可以用索引节点来表示,所以也可以说索引节点是整个linux文件系统的基础.操作系统在读取硬盘的时候不是一个块一个块的来读取信息,因为这样做的话效率太低,文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者.文件的创建日期.文件的大小等等.这种储存文件元信息的区域就叫做inode,中文译名为"索引节点". 在Linux系统中,文件系统主要分为两部分,

嵌入式 Linux根文件系统移植(一)——Linux文件系统简介

嵌入式 Linux根文件系统移植(一)--Linux文件系统简介 本文对文件系统分析的代码来源于linux 2.6.35.7版本. 一.文件系统的体系结构 文件系统是对存储设备上的数据和元数据进行组织的机制,便于用户和操作系统的交互.Linux支持多种文件系统,文件系统接口实现为分层的体系结构,将用户接口层.文件系统实现和操作存储设备的驱动程序分隔开.Linux文件系统的体系结构如下: 用户空间包含一些应用程序(例如,文件系统的使用者)和 GNU C库(glibc),为文件系统调用(打开.读取.

linux --> 文件系统十问

文件系统十问 参考:http://djt.qq.com/article/view/620 关于Linux文件系统相关的问题: 1.机械磁盘随机读写时速度非常慢,操作系统是采用什么技巧来提高随机读写的性能的? 2.touch一个新的空文件占用磁盘空间吗? 占用的话占用多少? 3.新建一个空目录占用磁盘空间吗?占用多少?和新建一个文件相比,哪个占用的更大? 4.你知道文件名是记录在磁盘的什么地方吗? 5.文件名最长多长?受什么制约? 6.文件名太长了会影响系统性能吗?为什么会产生影响? 7.一个目录

linux文件系统学习总结

linux最优秀的特点在于它是多用户多任务的环境,而且对于linux来讲一切皆文件,提到文件这个概念就免不了提文件相关的权限与属性的概念,那相关文件的属性记录在硬盘的哪个地方呢?这就需要了解linux的文件系统是如何记录文件,如何读取文件. 大家都知道硬盘作为存储介质,如果要使用硬盘存储数据需要对硬盘进行分区,格式化之后才可以存储数据.那为什么要对硬盘进行分区呢?因为我们必须要告诉操作系统:"这块硬盘可以访问的区域是有A柱面到B柱面",只有这样,操作系统才能控制硬盘磁头去A~B范围内的