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(符号链接)这几种文件类型。
详细的在这里就不展开了。
如在上图中第一位为‘-’。则表示该文件为常规文件。其它类型的文件通过该位显示的字符应该也非常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 文件系统初步的更多相关文章
- linux文件系统详解
最近在做磁盘性能优化,需要结合文件系统原理去思考优化方向,因此借此机会进一步加深了对文件系统的认识.在看这篇文章之前,建议先看下前面一篇关于磁盘工作原理的解读.下面简单总结一些要点分享出来: 一.文件 ...
- Linux文件系统学习(一)之相关概念⭐⭐⭐
“一切皆是文件”是 Unix/Linux 的基本哲学之一.不仅普通的文件,目录.字符设备.块设备.套接字等在 Unix/Linux 中都是以文件被对待:它们虽然类型不同,但是对其提供的却是同一套操作界 ...
- linux文件系统体系结构 和 虚拟文件系统(VFS)
图 1. Linux 文件系统组件的体系结构 用户空间包含一些应用程序(例如,文件系统的使用者)和 GNU C 库(glibc),它们为文件系统调用(打开.读取.写和关闭)提供用户接口.系统调用接口的 ...
- Linux文件系统
今天学习了Linux文件系统,现在来做个小总结. 首先Linux中一切都是文件,下面这个清单是Linux系统的顶层目录结构. 清单 1. Linux 系统的顶层目录结构 / 根目录 ├── bin 存 ...
- linux 文件系统简介
linux文件系统简介 文件系统是linux的一个十分基础的知识,同时也是学习linux的必备知识. 本文将站在一个较高的视图来了解linux的文件系统,主要包括了linux磁盘分区和目录.挂载基 ...
- Linux文件系统层次结构标准
该标准的目的是定义Linux文件系统的标准路径,使得开发者和用户可以在合理的位置找到需要的东西. Linux的文件布局的大体想法是将文件和目录分为如下3组: 对运行Linux的某一特定系统唯一的文件和 ...
- linux文件系统节点详解
linux文件系统有两层结构,逻辑结构和物理结构.也就是inode和block. 每个文件都有一个inode, 记录文件属性:权限,时间还有最重要的block号码. block是实际存放文件内容的地方 ...
- Linux文件系统应用---系统数据备份和迁移(用户角度)
1 前言 首先承诺:对于从Windows系统迁移过来的用户,困扰大家的 “Linux系统下是否可以把系统文件和用户文件分开到C盘和D盘中” 的问题也可以得到完满解决. 之前的文章对Linux的文 ...
- linux 文件系统解析及相关命令
简介 文件系统就是分区或磁盘上的所有文件的逻辑集合. 文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件.目录.软连接及文件保护信息等都存储在其中. 不同Lin ...
随机推荐
- 【【henuacm2016级暑期训练】动态规划专题 N】Valid Sets
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 给你一棵树. 让你统计其中子树T的数量. 这个子树T要满足最大值和最小值之差小于等于d 树形DP 可以枚举点root为子树的根. 统 ...
- 【转】Visual Studio單元測試小應用-測執行時間
[转]Visual Studio單元測試小應用-測執行時間 Visual Studio的單元測試會記錄每一個測試的執行時間,如果有幾個Method要測效能,以前我會用Stopwatch,最近我都改用單 ...
- zzulioj--1777--和尚特烦恼3——何时能下山(水题)
1777: 和尚特烦恼3--何时能下山 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 203 Solved: 111 SubmitStatusWeb ...
- [JZOJ 5909] [NOIP2018模拟10.16] 跑商(paoshang) 解题报告 (圆方树)
题目链接: https://jzoj.net/senior/#contest/show/2529/2 题目: 题目背景:尊者神高达很穷,所以他需要跑商来赚钱题目描述:基三的地图可以看做 n 个城市,m ...
- [雅礼NOIP集训 2017] number 解题报告 (组合数+二分)
题解: 令$S(i)={i+1,i+2,...,i<<1}$,f(i,k)表示S(i)中在二进制下恰好有k个1的数的个数 那么我们有$f(i,k)=\sum_{x=1}^{min(k,p) ...
- xBIM 基础11 WeXplorer 常用事件
系列目录 [已更新最新开发文章,点击查看详细] 本篇将介绍查看器在不同场合触发的事件.所有这些都记录在xViewer中. 如果您从Web服务器运行本教程,可以在此处查看完整的实例.并且确保您的 ...
- java高级——暴力反射
反射,java中一个比较高级的应用,主要和开发中的框架紧密相连.今天我们就介绍一下他的特性之一,暴力反射.(听名字很恐怖呦) package wo; public class A{ public St ...
- ing在写作中到底怎么用
改关静留的作业中我还得改英文摘要.于是有个地方用了ing.顺便查了一下. http://www.yygrammar.com/Article/201408/3677.html -ing分词用作状语时有九 ...
- Codeforces 845C. Two TVs 思路:简单贪心算法
题目: 题目原文链接:http://codeforces.com/contest/845/problem/C 题意:现在我们有一个电视清单,有两个电视,电视清单上有每一个节目的开始时间和结束时间. 电 ...
- Android 开发环境安装配置手册
本文指导,如何一步步搭建Android开发平台. 1 下载软件 n JDK 1.5+ 到 http://java.sun.com/javase/downloads/index.jsp 下载 n ...