Linux文件属性上

文件属性概述(ls -lhi)

linux里一切皆文件
Linux系统中的文件或目录的属性主要包括:索引节点(inode),文件类型,权限属性,链接数,所归属的用户和用户组,最近修改时间等内容:

解释:

第一列:inode索引节点编号(相当于人的身份证,全国唯一)
第二列:文件类型及权限
第二列共11个字符:其中第一个字符为文件类型,随后的9个字符为文件的对应权限,最后一个字符点号“.”是和selinux有关的一个标识;
第三列:硬链接个数(详细参看ln命令的讲解);
相当于超市的多个入口,可以从不同的文件入口进入文件,还可以互为备份(消防通道)
第四列:文件或目录所属的用户 文件的所有者(属主);
linux里面文件和程序的存在必须要有用户和组满足相应的存在需求。
第五咧:文件或目录所属的组
第六列:文件或目录的大小;
第七八九列:文件或目录的修改时间:默认月日时分
第十列:实际的文件或目录名
文件名不算文件的属性

下面我们以chensiqi文件为例进行说明,具体列的内容参考下上面的图:

1736707 -rwx-xr-x- 1 root root 35 Oct 28 11:29 chensiqi

  • inode索引节点编号:1736707
  • 文件类型,文件类型是-,表示这是一个普通文件;
  • 文件权限:文件权限是rwxr-xr-x,表示文件属主可读,可写,可执行,文件归属的用户组可读可执行,其他用户可执行。
  • 硬链接个数:表示chensiqi这个文件没有其它的硬链接,因为连接数是1,就是他本身;
  • 文件属主:这个文件所属的用户,这里意思是chensiqi文件被root用户拥有,注意,是第一个root;
  • 文件属组:这个文件所属的用户组,在这里是root用户组,是显示信息里的第二个root
  • 文件大小:文件大小是35个字节
  • 文件修改时间:这里的时间是该文件最后被更新(包括文件创建,内容更新,文件名更新等)的时间,可用如下命令查看文件的修改,访问,创建的时间

索引节点inode

inode 概述

  • 硬盘要存储数据,首先要分区,然后格式化创建文件系统,最后挂载,才能存数据。
  • Inode,中文意思是索引节点(index node)。在每个linux存储设备或存储设备的分区(存储设备可以是硬盘,软盘,U盘...)被格式化为ext4(CentOS6.8)文件系统后,一般生成两部分:第一部分是Inode(很多个),第二部分是Block(很多个)。
  • 这个Block是用来存储实际数据用的,例如:照片,视频等普通文件数据。
  • 而inode就是用来存储这些数据属性信息的(也就是ls -l的结果),inode属性信息包括不限于文件大小,属主(用户),归属的用户组,文件权限,文件类型,修改时间,还包含指向文件实体的指针功能(inode节点--block的对应关系)等,但是,inode里面唯独不包含文件名本身。文件名不在inode里,一般在上级目录的block里


身份证号 ==== inode号

  • Inode除了记录文件属性的信息外,还会为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,即可通过inode的值最快的找到相对应的文件实体。文件,inode,block之间的关系见下图:

假如有一本书,存储设备和分区就相当于这本书,Block相当于书中的每一页内容,而inode就相当于这本书前面的目录,一本书有很多内容,一个知识点可能有多页,如果想查找某部分或某知识点的内容,我们一般先查书的目录,通过目录能更快的找到我们想要看的知识点的内容。虽然不太恰当,但还是比较形象。

当我们用ls查看某个目录或文件时,如果加上-i参数,就可以看到inode节点了:

【[email protected] /】# ls -i

  • 图第一列inode值259615;查看一个文件或目录的inode,通过ls命令的-i参数即可。
  • 因为inode要存放文件的属性信息,所以每个inode本身是有大小的,Centos5系列inode的默认大小是128字节,而Centos6系列inode的默认大小是256字节,inode的大小在分区被格式化创建文件系统之后定下来的,格式化以后就无法更改inode大小,格式化前可以通过参数指定inode的大小,但是一般企业工作环境没这个需求。
  • 不同Centos版本inode大小不同

查看文件系统inode总量以及剩余量:df -i

查看磁盘使用量: df -h

Inode:存放文件的属性+文件内容的位置(block的位置)

Block:存放实际数据

企业案例模拟:模拟磁盘满的情况

磁盘满的一个特征(no space left on device)

1.block 满了 磁盘空间满了

2.inode 满了 创建一个文件就需要一个inode

有关inode的小结

  1. 诞生:磁盘被分区并格式化为ext4文件系统后,会生成一定数量的inode和block
  2. inode称为索引(目录)节点,它的作用是存放文件的属性信息以及作为文件的索引(指向文件的实体block)
  3. ext3/ext4 文件系统的block 存放的是文件的实际内容(数据)。
  4. inode是磁盘上的一块存储空间,CentOS6非启动分区inode默认大小256字节,CentOS5是128字节
  5. inode的表现是形式一串数字,不同的文件对应的inode(一串数字)在文件系统里是唯一的。
  6. inode节点号相同的文件,互为硬链接文件,可以认为是一个文件的不同入口。
  7. ext3/ext4文件系统下,一个文件至少要占用一个inode和一个block。(文件size比较大)
  8. ext3/ext4文件系统下,正常情况一个文件占用且只能占用一个inode(人和身份证号)
  9. block是用来存储实际数据的,每个block的大小一般有1k,2k,4k几种。其中引导分区等为1k,其他普通分区多为4K(CentOS6)
  10. 如果一个文件很大(高清大片4G),需要占用多个block,如果文件很小(0.01k),至少占一个block,并且这个block的剩余空间就浪费了,即无法在存储其他数据

有关Block的知识小结

  1. 磁盘读取数据是按block为单位读取的
  2. 一个文件可能占用多个block。每读取一个block就会消耗一次磁盘I/O
  3. 如果要提升磁盘I/O性能,那么就要尽可能一次性读取数据尽量的多
  4. 一个block只能存放一个文件的内容,无论内容多小。如果block默认是4K大小,那么存放一个1K的文件,剩余3K就不能存放别的文件,只能浪费了
  5. Block并非越大越好。Block太大对于存放小文件就会浪费磁盘空间
  6. 根据业务需求,确定默认的block大小,如果是大文件(大于16K)一般设置block大一点,小文件(小于1K)一般设置block小一点
  7. block太大,例如4K,文件都是0.1K的,大量浪费磁盘空间,但是访问性能高
  8. block太小,例如1K,文件都是1000K,消耗大量磁盘I/O
  9. 企业里文件都会比较大(一般会大于4K),block设置大一些会提升磁盘访问效率。
  10. ext3/ext4文件系统(CentOS5和CentOS6),一般都设置为4K。
    当前的生产环境一般设置为4K,特殊的业务,如视频可以加大block大小

企业面试题一:

一个100M(100000K)的磁盘分区,分别写入1K的文件或写入1M的文件,分别可以写多少个?

  • 1K文件虽小,但是block一般默认4K,即使1K的数据也会占用4K大小,比如大家创建一个空文件,然后du -sk 看看大小是多少。(如果大家此时认为应该100000/4的话,那么你就掉坑了-_-!别忘了存储数据,消耗的不光是block还有inode,inode默认只有256K(centos6),每个文件至少占用一个block的同时还会占用一个inode)
  • 1M的数据他刚好能被4整除。所以不会浪费空间,大约为100个左右,inode充足。总上对于大文件一般inode是足够的,大文件基本也不会浪费空间,整除就可以;但是对于小文件来说,inode是不足够的,因此能够存储的数量就是inode的数量

企业面试题二:

如果向磁盘写入数据提示如下错误:No space left on device,通过df -h查看磁盘空间,发现没满,请问可能原因是什么?企业场景什么情况下会导致这个问题发生?

磁盘没满但是不能卸乳文件,最可能的原因就是inode被耗尽了
企业工作中邮件临时队列/var/spool/clientmquene或/var/spool/postfix/maildrop这里很容易被大量小文件占满导致No space left on device的错误。clientmquene目录只有安装了sendmail服务,才会有,是sendmail的临时队列。centos5.8默认就会装sendmail,centos6默认没有sendmail,但是有postfix

文件类型及文件扩展名

文件类型介绍

  • windows扩展名让系统区分不同文件类型,扩展名错误导致文件无法打开。
  • linux通过扩展名让人区分文件类型,为了易读,错误也可以正常使用

例如:

windows图片文件扩展名:jpg,jpeg,png,gif等
文本文件扩展名:doc,docx,txt,pdf

Linux中的文件类型

感觉对于实际应用意义不大,大家只需要知道通过ls -l查看目录的时候

如果权限那里是-rw--r--r--,第一个字符是‘-’就代表是普通文件
如果第一个字符是d例如drw--r--r--.就代表是个文件夹
如果第一个字符是l例如lrw--r--r--,就代表是个软链接

Linux下扩展名的作用

在linux中,虽然扩展名没什么意义,但是为了兼容windows,同时,便于我们大多数windows用户区分文件的不同,所以,我们还是习惯通过扩展名来表示不同文件的类型。

如下

  1. tar,tar.gz,tgz,zip,tar.bz表示压缩文件,创建命令一般为tar,gzip,unzip等
  2. .sh表示shell脚本文件,通过shell语言开发的程序
  3. .pl表示perl语言文件,通过perl语言开发的程序
  4. .py表示python语言文件,通过python语言开发的程序
  5. .html,.htm,.php,.jsp,.do表示网页语言的文件
  6. .conf表示系统的配置文件
  7. .rpm表示rpm安装包文件

参考博客:http://www.cnblogs.com/chensiqiqi/p/6247146.html

时间: 2024-10-10 06:54:32

Linux文件属性上的相关文章

linux文件属性详细说明

转自:http://hi.baidu.com/inclover/blog/item/0a7f6f97efddde6755fb96e5.html 1. Linux 文件属性概说: Linux 文件或目录的属性主要包括:文件或目录的节点.种类.权限模式.链接数量.所归属的用户和用户组.最近访问或修改的时间等内容: [[email protected] ~]# ls -lih总计 104K 2408949 -rwxr-xr-x 1 root root    7 04-21 12:47 lsfile.s

cwRsyncServer从windows下数据实时同步到linux服务器上的实现过程

由于公司有两台windows服务器,开发在操作时一般也都是在这两台服务器上上传一些数据或修改一些东西,而Linux上的服务器也要跟windows上的数据要保持一致而又不需要人为的实现这个过程,基于此过程,昨天花了点时间,完成了基本的测试实现过程,今天就把这过程给记录下来,方便以后查看,以希望可以帮到还在困惑的朋友们. 第一步:在windows上的安装cwRsyncServer4.1.0以及配置过程: 在windows上下载安装包cwRsyncServer4.rar,这个不多解析,大家都懂,要是在

linux文件属性、特殊符号、通配符、通配符与正则的区别

作者:Georgekai 归档:学习笔记 2017/12/25 本章正题:linux文件属性.特殊符号.通配符.通配符与正则的区别 1.1 软链接与硬连接的区别 1.1.1 1.创建软连接(怎么来的) cp -s 或 ln -s 意思一样 1.1.2 2.创建硬链接(怎么来的) ln  源文件  链接文件 1.1.3 区别(什么意思) 1.软连接相当于windows中快捷方式,存放的是源文件的位置 2.硬链接相当于是文件的入口.多个硬链接,相当于是超市的前后门 3.硬链接也是个普通文件 (-),

[Python 学习] 二、在Linux平台上使用Python

这一节,主要介绍在Linux平台上如何使用Python 1. Python安装. 现在大部分的发行版本都是自带Python的,所以可以不用安装.如果要安装的话,可以使用对应的系统安装指令. Fedora系统:先以root登入,运行 yum install python Ubuntu系统:在root组的用户, 运行 sudo apt-get install python 2. 使用的Python的脚本 Linux是一个以文件为单位的系统,那么我们使用的Python是哪一个文件呢? 这个可以通过指令

阿里云CentOS Linux服务器上搭建邮件服务器遇到的问题

参考文章: 阿里云CentOS Linux服务器上用postfix搭建邮件服务器 Linux系统下邮件服务器的搭建(Postfix+Dovecot) 本来想自己搭建邮件服务器,但是看到一篇资料表示阿里云为了禁止垃圾邮件,禁用了25端口. 可以使用阿里云的邮件推送服务. SMTP之PHP调用示例 email.class.php下载

Linux主机上使用交叉编译移植u-boot到树莓派

0环境 Linux主机OS:Ubuntu14.04 64位,运行在wmware workstation 10虚拟机 树莓派版本:raspberry pi 2 B型. 树莓派OS: Debian Jessie Raspbian Jessie 1树莓派的启动过程 树莓派1,2,3的启动过程大致相同,主要分为3个阶段:ROM上的GPU bootloader启动GPU,GPU启动CPU,CPU直接启动内核或通过u-boot启动内核. 由于树莓派涉及到GPU的东西不开源,移植u-boot到树莓派并不是真正

linux系统上安装paramiko模块

Linux系统上安装paramiko模块要求python要是2.7以上的,所以在安装模块之前应该安装python2.7(这里的安装过程略去) 在安装setuptools的时候突然报错了,RuntimeError:Compression requires the (missing) zlib module原因是因为没有安装zilb和zlib-devel包. yum install zlib yum installzlib-devel 安装完成后,重新编译 python2.7[不需要删除,只需要重新

Linux系统上安装字体

最近项目中需要控制字体类型,然后就上网查了一下在linux系统上安装字体,在window上和linux上,字体要求一样,都是ttf格式,下面这是window上的字体截图 在linux系统中的/usr/share/fonts下面新建一个目录,这里取名my_fonts,然后将tff格式的字体复制到这个文件夹中, 通过fc-list这个命令查看该系统下面安装了那些字体, 然后进入到新创建的文件夹下,ll查看这个文件下有那些文件,可以看到刚才复制进去的字体: 然后执行下面的三条命令, mkfontsca

Linux系统上的任务计划相关命令at、crontab的使用方法

一.总结Linux系统上的任务计划at.crontab的详细使用方法 1.计划任务说明 在未来时间点一次性执行某任务:at,batch: 周期性执行某任务:crontab: 2.电子邮件服务 计划任务默认以邮件的形式将结果发送给执行任务的用户 mail命令: mail username(@hostname):进入交互式收发邮件接口 mail -s 'SUBJECT' [email protected]:设置邮件主题 < /path/from/somefile:将文件内容发送给收件人 echo &qu