Linux文件介绍

Linux 文件属性

可以通过命令ll+文件名,查看文件的具体属性

例如:ll syz.gz

1736706 -rw-r--r--. 1 root root 28 Oct 27 12:01 syz.gz
     ①            ②      ③  ④   ⑤   ⑥  ⑦  ⑧     ⑨       ⑩
第一列①:iNode索引节点编号#(类似人的身份证,全国唯一);
系统读取文件时首先通过文件名找到inode,然后才能读取到文件内容。
第二列②:文件类型及权限(共11个字符,第一个字符为类型,后9个字符为文件权限)
最后一个字符“.”表示与selinux相关的标识(没太大作用)
第三列③:硬链接(同一个文件的不同入口数)个数(详细参看ln命令的讲解。)
第四列④:文件或目录所属的用户(属主)
linux里面文件和程序的存在必须要有用户和组满足相应的存在需求。
第五列⑤:文件或目录所属的组
第六列⑥:文件或目录的大小
第七、八、九列:文件的目录的修改时间:默认为:月日时分
第十列:实际的文件名或目录名

Linux文件的权限

说明:linux中每个文件或目录都有一组共9个基础权限位,每三位字符被分为一组,他们分别是属主权限位(占三个字符)、用户组权限位(占三个字符)、其他用户权限位(占三个字符)。比如rwxr-xr-x,在linux中正是这9个权限位(更多权限位后面会提到),来控制文件属主、用户组以及其他用户的权限。

权限位说明

linux文件或目录权限位是由9个权限位来控制,每三位为一组,它们分别是文件属主(owner)的读、写、执行,用户组(group)的读、写、执行以及(other)其他用户的读、写、执行。

权限位 说明
r read可读权限 对应数字是:4
w write 可写权限 对应数字是:2
x Execute 可执行权限 对应数字是:1
- 没有任何权限 对应数字是:0

注:后面还会有特殊权限位:t T s S X x +

linux(普通文件)的读、写、执行权限说明

1、可读r:表示具有读取、阅读文件内容的权限。
2、可写w:表示具有新增、修改文件内容的权限。(并不是说可以删除文件)
1)如果没有r,那么vi会提示无法编辑(可强制编辑即“:wq!”),echo 可以重定向或追加);
2)特别提示:删除文件(修改文件名等)的权限受父目录的权限控制,和文件本身权限无关。
3、可执行x:表示具有执行文件的权限。
1):文件本身要能够执行
2):普通用户同时还需要具备r的权限才能。
3):root只要有x的权限就能执行。

(linux目录)的读、写、执行权限说明

1、可读r:表示具有浏览目录下面文件及子目录的权限,即ls dir
1)如果没有x权限,不能进到目录里,即无法cd dir
2)如果没有x权限,ls列表时可以看到所有文件名,但是会提示无权访问目录下文件。
3)如果ls -l列表,所有的属性会带有问好,也会提示无权访问目录下文件。
但是可以看到所有文件名。
2、可写w:表示具有增加、删除或修改目录内文件名(一般指文件名)的权限(需要x权限配合)
3、可执行x:表示具有进入目录的权限,例如 :cd dir
但是没有r无法列表文件及目录,没有w无法新建和删除。

索引节点inode(index node)

硬盘要存储数据(房子住人),首先要分区(隔断),然后格式化,创建文件(装修),最后存数据(住人)。

inode ,在每个linux存储设备或存储设备的分区(存储设备 是硬盘、软盘。。。)被格式化为ext4(CentOS6.7)文件系统后,一般生成两部分:第一部分生成Inode(很多个)第二部分是Block(很多个);这个Block是用来存储手机数据用的,例如:照片,视频等普通文件数据。而inode就是用来存储这些数据的属性信息,inode的属性信息包括不限于文件大小、属主(用户)、归属的用户组、文件的权限、文件的类型、修改时间、还包含指向文件实体的指针的功能(inode节点--blcok的对应关系)等,但是inode里面唯独不包含文件名。inode除了记录文件属性的信息外,还会为每个文件进行信息索引,索引就有了inode的数值。操作系统根据指令,即可通过inode的值最快的找到相对于的文件实体。因为inode要存放文件的属性信息,所以每个inode本身是有大小的,CentOS5 inode默认大小是128字节;而CentOS6系列inode的默认大小是256字节,inode的大小是在分区被格式化创建文件系统之后定下来的,格式化以后就无法更改inode的大小格式化前可以通过参数指定inode的大小,但是一般企业工作环境没有这个需求。

查看文件系统inode的总量以及剩余量的命令:df -i
查看磁盘的使用量的命令:df -h
磁盘空间是否满了,是由两项参数决定的:
第一个是inode是否满了,第二个block是否满了,任何一项满了,都无法放你最喜欢的文件了
磁盘满的一个特征:(no space left on device )

有关inode的小结

1):磁盘被分区并格式化为ext4文件系统后会生成一定数量的inode和block

2):inode是索引节点,作用是存放文件的属性信息以及作为文件的索引(指向文件的实体)

3):ext3、ext4文件系统的block存放的是文件的实际内容

4):inode是磁盘上的一块存储空间,C6非启动分区inode默认大小256字节,C5是128字节

5):inode的表现形式是一串数字,不同的文件对应的inode(一串数字)在文件系统里面是唯一的

6):inode节点号相同的文件,互为硬链接文件,可以认为是一个文件的不同入口

7):ext3、ext4文件系统下,一个文件被创建后至少要占用一个inode和一个block

8):ext3、ext4文件系统下,正常情况下一个文件占用且只能占用一个inode #(类似人和身份证)

9):block是用来存储实际数据的,他的大小一般有1k,2k,4k几种,其中引导分区等为1k,其他普

通分区多为4k(C6)

10):如果一个文件很大(高清大片),可能需要占用多个block,如果文件很小(0.01),至少占

用一个block,并且这个blockd的剩余空间浪费了,即无法再存储其他数据了。

11):inode大小的总量查看
dumpe2fs /dev/sda3|grep -i "block count|Inode count"
dumpe2fs /dev/sda3|grep -i "block size|Inode size"
默认block count 一般会大于Inode count 的数量。

12):查看inode的总量和使用量命令:df -i

13):查看文件的inode的命令:
ls -li 或stat /etc/hosts

14):如何生成及指定inode大小:
格式化命令:mkfs.ext4 -b 2048 -l 256 /dev/sbd

stat /etc/hosts :查看文件或文件系统的详细属性

有关Block的知识小结

1)磁盘读取数据是按block为单位读取的;

2)一个文件可能占用多个block,但是每读取一个block就会消耗一次磁盘I/0;

3)如果要提升磁盘IO性能,那么就要尽可能一次性读取数据尽量的多;

4)一个block只能存放一个文件的内容,无论内容有多小,如果block默认是4K大小,那么存放一个1K的文件,剩余3K就不能存放别的文件,只能浪费了;

5)Block并非越大越好,Block太大对于小文件存放就会浪费磁盘空间,例如:1000K的文件BLOCK为4K,占用250个BLOCK,如果BLOCK默认为1K,则需要占用1000个BLOCK,访问效率谁更高?消耗IO分别为250次和1000次;

6)根据业务需求,确定默认的block大小,如果大文件(大于16K)一般设置BLOCK大一点,小文件(小于1K)一般设置BLOCK小一点;

7)BLOCK太大,例如4K,文件都是0.1K的,大量浪费磁盘空间,但是访问性能高;

8)BLOCK太小,例如1K,文件都是1000K,消耗磁盘IO;

9)BLock的大小设置也是格式化分区时候确定的,命令:mkfs.ext4 -b 2048 -I 256 /dev/sdb

10)企业里文件都会比较大(一般会大于4K),block设置大一些会提升磁盘访问效率;

11)ext3、ext4文件系统(CentOS5和6),一般都设置为4K;

(当前的生产环境一般设置为4K,特殊的业务,如视频可以加大block大小)block如果设置太大就会浪费磁盘空间,太小就会限制访问速度,所以设置block大小时,需要折中考虑

文件类型介绍

linux系统不同于window系统,两者的文件类型和文件扩展名也有很大的差异,linux系统中的文件类型,和文件扩展名所代表的意义和Windows系统中的是不同的。

在linux系统中,我们一般通过应用程序或命令创建文件,如file.txt、file.tar.gz,这些文件的扩展名不同且要用不同的程序或命令来打开,但都是常规文件(也被称为普通文件)后面附带的后缀文件扩展名(txt.tar.gz),除了让曾经习惯Windows的用户易读外,大多数对于linux系统来说没什么特别实际意义,在linux系统中也是为了易读,二Windows系统中的扩展名就是实实在在表示文件的类型格式。

例如:Windows图片文件扩展名:jpg.jpeg.png.bmp.gif等
文本文件扩展名:doc.docx.txt.pdf

在linux系统中,可以说一切设备(包括目录、普通文件、设备文件等)皆为文件。文件类型包含有普通文件、目录、字符设备文件、块设备文件、符号链接文件、管道文件等等:

在ls -l 显示文件属性内容后,第一列的一个字符就是用来区分文件类型的:
d(directory) 表示这是一个目录,如上文ext,在ext2fs中,目录是一个特殊的文件。
-(regular file) 表示这是一个普通的文件,如上文的oldboy
l(link) 表示这是一个符号链接文件,实际上它指向另一个文件
b(block) 表示块设备和其他的外围设备,是特殊类型的文件。
以上四个为重点,下面三个不经常用
c(character) 表示字符设备文件(串口设备)
s(socket) 表示Socket文件(网络通信的时候、套接字文件)
p(named pipe) 表示管道文件

最新文章

  1. ubuntu安装mysql
  2. eclipse 字体、背景、自动提示设置
  3. 怎样在ZBrush中快速绘制人体躯干
  4. java 面向对象编程 第20章 XML技术解析
  5. CS小分队第一阶段冲刺站立会议(5月9日)
  6. newusers和chpasswd
  7. MVC自学系列之三(MVC视图-Views)
  8. myisam和innodb索引实现的不同
  9. android ksoap2调用.net Webservice 方法总结
  10. CSS以图换字的9种方法
  11. css div 细边框
  12. Java之恋
  13. Java连接Oracle12c
  14. 辨析字节序(Endianness)
  15. bootstrap的使用集锦
  16. centos7 使用kubeadm 快速部署 kubernetes 国内源
  17. javascript parseUrl函数解析url获取网址url参数
  18. 九度OJ-1112-导弹拦截-最长不增子序列
  19. js全局作用域
  20. Java与go哪个更适合后端开发呢?哪个更适合新手呢?

热门文章

  1. shell-#!
  2. vue 各种 import 引入
  3. 学习JS基本数据类型与对象的valueOf方法
  4. CSS中的块级元素和行内元素
  5. Process Array
  6. 第三章 k8s的node节点配置
  7. Gym 102007I 二分 网络流
  8. QMap的key也可以是一个结构体类吗?
  9. Android蓝牙自动配对Demo,亲测好使!!!(转)
  10. 分分钟教你学会 ToolBar 的使用(转)