在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(符号链接)这几种文件类型。

详细的在这里就不展开了。

如在上图中第一位为‘-’。则表示该文件为常规文件。其它类型的文件通过该位显示的字符应该也非常easy推断出来。

文件权限:

以下我们就来看看后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环境高级编程》

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

  1. linux文件系统详解

    最近在做磁盘性能优化,需要结合文件系统原理去思考优化方向,因此借此机会进一步加深了对文件系统的认识.在看这篇文章之前,建议先看下前面一篇关于磁盘工作原理的解读.下面简单总结一些要点分享出来: 一.文件 ...

  2. Linux文件系统学习(一)之相关概念⭐⭐⭐

    “一切皆是文件”是 Unix/Linux 的基本哲学之一.不仅普通的文件,目录.字符设备.块设备.套接字等在 Unix/Linux 中都是以文件被对待:它们虽然类型不同,但是对其提供的却是同一套操作界 ...

  3. linux文件系统体系结构 和 虚拟文件系统(VFS)

    图 1. Linux 文件系统组件的体系结构 用户空间包含一些应用程序(例如,文件系统的使用者)和 GNU C 库(glibc),它们为文件系统调用(打开.读取.写和关闭)提供用户接口.系统调用接口的 ...

  4. Linux文件系统

    今天学习了Linux文件系统,现在来做个小总结. 首先Linux中一切都是文件,下面这个清单是Linux系统的顶层目录结构. 清单 1. Linux 系统的顶层目录结构 / 根目录 ├── bin 存 ...

  5. linux 文件系统简介

    linux文件系统简介   文件系统是linux的一个十分基础的知识,同时也是学习linux的必备知识. 本文将站在一个较高的视图来了解linux的文件系统,主要包括了linux磁盘分区和目录.挂载基 ...

  6. Linux文件系统层次结构标准

    该标准的目的是定义Linux文件系统的标准路径,使得开发者和用户可以在合理的位置找到需要的东西. Linux的文件布局的大体想法是将文件和目录分为如下3组: 对运行Linux的某一特定系统唯一的文件和 ...

  7. linux文件系统节点详解

    linux文件系统有两层结构,逻辑结构和物理结构.也就是inode和block. 每个文件都有一个inode, 记录文件属性:权限,时间还有最重要的block号码. block是实际存放文件内容的地方 ...

  8. Linux文件系统应用---系统数据备份和迁移(用户角度)

    1   前言 首先承诺:对于从Windows系统迁移过来的用户,困扰大家的  “Linux系统下是否可以把系统文件和用户文件分开到C盘和D盘中” 的问题也可以得到完满解决. 之前的文章对Linux的文 ...

  9. linux 文件系统解析及相关命令

    简介 文件系统就是分区或磁盘上的所有文件的逻辑集合. 文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件.目录.软连接及文件保护信息等都存储在其中. 不同Lin ...

随机推荐

  1. HDU 4323 Contest 3

    编辑距离,经典的了.动态规划枚举即过. #include <iostream> #include <cstdio> #include <string.h> #inc ...

  2. 指尖上的电商---(5)schema.xml配置具体解释

    这一节我们看下schema.xml文件中各个节点的配置极其作用.schema.xml文件中面主要定义了索引数据类型,索引字段等信息. 主要包含了下面节点 1.fieldtype节点 fieldtype ...

  3. 设计网页录入信息与自己定义server数据接收

    需求:设计一个注冊网页用于录入username和登录password.并将数据传入server并显示出来. 1.前言:网页提交的 get 和 post 两种方式. (1)对于get提交方式,以本文中样 ...

  4. Ubuntu: GlusterFS+HBase安装教程

    HBase通常安装在Hadoop HDFS上,但也能够安装在其它实现了Hadoop文件接口的分布式文件系统上.如KFS. glusterfs是一个集群文件系统可扩展到几peta-bytes. 它集合了 ...

  5. 4K 对齐与固态硬盘检测工具

    0. 硬盘扇区 当前电脑传统机械硬盘的每个扇区一般大小为 512 字节(512B):当使用某一文件系统将硬盘格式化时,文件系统会将硬盘扇区.磁道与柱面统计整理并定义一个簇为多少扇区方便快速存储. 现时 ...

  6. HBA卡

    HBA,即主机总线适配器英文“Host Bus Adapter”缩写.是一个在服务器和存储装置间提供输入/输出(I/O)处理和物理连接的电路板和/或集成电路适配器. HBA减轻了主处理器在数据存储和检 ...

  7. [JZOJ 5465] [NOIP2017提高A组冲刺11.9] 道路重建 解题报告 (e-dcc+树的直径)

    题目链接: http://172.16.0.132/senior/#main/show/5465 题目: 小X所居住的X国共有n个城市,有m条无向道路将其连接.作为一个统一的国家,X 城的任意两个城市 ...

  8. Swift学习笔记(8):闭包

    目录: 基本语法 尾随闭包 值捕获 自动闭包 闭包是自包含的函数代码块,闭包采取如下三种形式之一: ・全局函数是一个有名字但不会捕获任何值的闭包 ・嵌套函数是一个有名字并可以捕获其封闭函数域内值的闭包 ...

  9. highcharts的使用:从数据库获取数据显示在图上

    //月产量统计图 function GetHighCharts() { var date = new Date(); var year = date.getFullYear(); var month_ ...

  10. Windbg调试托管代码

    Windbg调试.net托管代码需要借助于SOS.dll,.Net 4.0的32位sos.dll的路径在C:\Windows\Microsoft.NET\Framework\v4.0.30319,64 ...