Linux文件属性(描述信息)

-i inode节点号
-h 人类可读

ls -lhi
1703938 drwxr-xr-x 2 rsync rsync 4.0K Jun 7 07:24 gameserver1
第一列:文件的索引节点号(人的身份证,linux系统唯一)
系统读取文件时首先通过文件名找到inode,然后才能读取文件内容。 第二列:文件的类型和权限,第一个字符文件的类型,后九个字符是文件的权限,最后一个字符.是和selinux相关的标识 第三列:硬链接的数量,同一个文件的不同的访问路口 第四列:文件或目录所属的用户,属主
linux里面文件和程序的存在必须要有用户和组满足的存在需求 第五列:文件或目录所属的组 第六列:文件大小 第七列:第八列:第九列:文件的修改时间 对应的是-mtime时间,默认是月日时分
ctime是属性的改变,atime访问 第十列:文件名称
文件名不算文件的属性

第一列:索引节点inode

inode 索引节点,英文就是 index node
硬盘要存储数据,首先要分区,然后格式化创建文件系统,最后存储数据

每个linux存储设备或存储设备的分区被格式化为ext4文件系统后(管理文件的一种机制),一般生成2部分,inode和block

block是用来存储数据的用的。
inode就是用来存储数据属性信息的(相当于ls -l的结果),inode属性信息包括不限于文件大小,属主,归属的用户组,文件权限,文件类型,修改时间,还包含指向文件实体的指针,但是inode里面唯独不包含文件名,还会为每个文件进行信息索引,就是inode的数值。

书的目录索引就相当于inode,每一页相当于block,整本书就是一个扇区

stat 显示文件,文件系统状态(查看文件属性)
stat /etc/hosts 也可以查看inode,详细的查看文件信息

[root@Poppy ~]# stat /etc/hosts
File: ‘/etc/hosts’
Size: 204 Blocks: 8 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 1183348 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-06-19 14:10:17.421425118 +0800
Modify: 2018-06-14 14:05:07.713140443 +0800
Change: 2018-06-14 14:05:07.716140534 +0800
Birth: -

因为inode要存放文件的属性,所以每个inode本身是有大小的,centos5默认大小事128字节,centos6是256字节,inode的大小在文件系统被格式化创建文件系统之后定下来的,格式化以后就无法更改inode大小,格式化之前可以通过参数指定inode的大小,但是一般不需要改

文件系统的默认inode大小
[root@Poppy ~]# dumpe2fs /dev/vda1|grep -i "inode size"
dumpe2fs 1.42.9 (28-Dec-2013)
Inode size: 256 文件系统inode总量以及剩余量
[root@Poppy ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/vda1 2621440 151967 2469473 6% /
devtmpfs 233122 320 232802 1% /dev
tmpfs 235465 1 235464 1% /dev/shm
tmpfs 235465 406 235059 1% /run
tmpfs 235465 16 235449 1% /sys/fs/cgroup
tmpfs 235465 1 235464 1% /run/user/0 磁盘空间是否满了,第一个是inode是否满了,第二个事block满了
磁盘满了的特征 no space device left on

我们总结一下inode节点

1. 磁盘被分区并格式化为ext3/ext4文件系统后会生成一定数量的inode和block
2. inode称为索引节点,它的作用就是存放文件的属性信息以及作为文件的索引(指向文件的实体)
3. ext3/ext4文件系统的block存放的是文件的实际内容
4. inode是磁盘上的一块存储空间,centos6非启动分区inode默认大小256字节,centos5是128字节
5. inode的表现形式是一串数字,不同的文件对应的inode(一串数字)在文件系统里是唯一的。
6. inode相同的文件,互为硬链接文件
7. ext3/ext4文件系统下,一个文件被创建后至少要占用一个inode和一个block
8. ext3/ext4文件系统下,正常情况下一个文件占用且只能占用一个inode
9. block是用来存储数据的,每个block大小一般有1k,2k,4k几种,其中引导分区等为1k,其他普通分区为4k
10. 如果一个文件很大,可能占多个block,如果文件很小,至少也要占一个block,并且这个block的剩余空间就浪费了,即无法在存储其他数据了
11. inode大小和block总量查看
[root@Poppy ~]# dumpe2fs /dev/vda1 |egrep -i "block size|inode size"
dumpe2fs 1.42.9 (28-Dec-2013)
Block size: 4096
Inode size: 256 [root@Poppy ~]# dumpe2fs /dev/vda1 |egrep -i "block count|inode count"
dumpe2fs 1.42.9 (28-Dec-2013)
Inode count: 2621440
Block count: 10485248
Reserved block count: 524262
默认block count一般会大于inode count的数量 12. 查看inode的总量和使用量命令 df -i 13. 查看文件的inode
ls -li 或 stat /etc/hosts 14. 改变inode大小
格式化的时候: mkfs.ext4 -b 2048 -I 256 /dev/sda

1. block块

1. 磁盘读取数据是按block为单位读取的
2. 一个文件可能占用多个block。但是每读取一个block就会消耗一次磁盘i/o
3. 如果要提升磁盘io性能,那么就要尽可能一次性读取数据尽量的多
4. 一个block只能存放一个文件的内容,无论内容有多小。如果blcok默认是4K大小,那么存放一个1K的文件,剩余3K就不能存放别的文件,只能浪费了
5. block太大,例如4k,文件都是0.1k,浪费磁盘空间,但是访问性能高
6. block太小,例如1k,文件都是1000k,消耗大量磁盘I/O
7. block的大小设置十四载格式化分区时候确定的,mkfs.ext4 -b 2048 -I 256 /dev/vda/
8. 企业里文件都比较大(一般大于4K),block设置大一些会提升磁盘访问效率
9. ext3/ext4文件系统,一般都是设置为4k

2. inode和block的总结

1. 磁盘被分区格式化文件系统后,会分为inode和block俩部分内容
2. inode存放文件的属性以及指向文件实体的指针,文件名不在inode里,一般上级目录的block里
3. 访问文件,通过文件名---inode---blocks
4. inode一般情况下大小是256b,block大小1,2,4k,默认是4k,注意,引导分区等特殊分区除外
5. 通过df -i查看inode的数量以及使用情况,dumpe2fs /dev/vda1 查看inode及block的大小及数量
6. 一个文件至少要占用一个inode及一个block,多个文件可以占用同一个inode(硬链接),相同文件
7. 一个block只能被一个文件使用,如果文件很小block很大,剩余空间浪费,无法继续被其他文件使用
8. block不是越大越好,要根据业务的文件大小进行选择,一般默认4k
9. 可以在格式化的时候改变inode及block的大小

第二列:文件类型,权限,点

ls -lhi
1703938 drwxr-xr-x 2 rsync rsync 4.0K Jun 7 07:24 gameserver1

一 文件类型

在inux系统中,一切皆文件

普通文件的创建:touch cp > tar

1. 普通文件包括:

2. 目录文件

[root@Poppy joker]# tree -Ld 1 /joker    显示目录结构
/joker
├── gameserver1
├── gameserver2
├── scripts
└── tools 4 directories
-L layer层数, -d目录

3. 字符设备文件

字符设备或块设备
[root@Poppy joker]# ls -al /dev/tty
crw-rw-rw- 1 root tty 5, 0 Jun 12 11:33 /dev/tty

4. 块设备文件

什么是块设备,就是存放数据的,就是磁盘
[root@Poppy ~]# find /dev -type b|xargs ls -l
brw-rw---- 1 root disk 253, 0 Jun 6 14:09 /dev/vda
brw-rw---- 1 root disk 253, 1 Jun 6 14:10 /dev/vda1

5. 套接字文件

用于网络通信的,数据库mysql.sock

[root@Poppy ~]# find /dev -type s |xargs ls -l
srw-rw-rw- 1 root root 0 Jun 6 22:09 /dev/log

6. 符号链接文件

快捷方式,指向文件的实体

[root@Poppy ~]# find /application/ -type l|xargs ls -l
lrwxrwxrwx 1 root root 26 Jun 13 10:30 /application/apache -> /application/apache2.4.33/

7. 管道文件

特殊的文件类型,主要是解决多个程序同时访问一个文件所造成的错误,第一个字符为p

8. 扩展名文件

linux中的文件是不需要扩展名的,为了 兼容window,便于我们大多数习惯了windows的用户区分文件的不同

如何查看文件类型:

[root@Poppy joker]# file a
a: ASCII text
[root@Poppy joker]# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=3d705971a4c4544545cb78fd890d27bf792af6d4, stripped
[root@Poppy joker]# file /var/log/wtmp
/var/log/wtmp: data

二 权限位

- 没有权限 0 , r 4 w 2 x 1
前三位 属主权限位(用户权限位),中三位 属组权限位(用户组),后三位 其它用户权限位

三 关于.

.与selinux相关的状态,如果把selinux关闭,目录文件将不会有这个.

第三列:链接数量

一种是硬链接,还有一种是软连接或符号链接

1. 硬链接
通过ln命令创建的硬链接,而通过ln -s创建的链接是软链接

命令演示
ln 源文件 目标文件
ln -s 源文件 目标文件,不能事先存在

硬链接是通过inode来进行链接,在linux系统中,多个文件名指向同一个索引节点是正常允许的,这种情况的文件就称为硬链接文件。硬链接文件就相当于文件的另外一个入口。作用之一是允许一个文件拥有多个有效路径名,以防止误删除。

[root@Poppy joker]# echo 1 > a
[root@Poppy joker]# ln a b
[root@Poppy joker]# ls -lhi
total 744K
1717994 -rw-r--r-- 2 root root 2 Jun 20 14:06 a
1717994 -rw-r--r-- 2 root root 2 Jun 20 14:06 b
所以即使你删除了a,还能通过b来恢复重定向

linux下文件删除的原理

只要文件的inode还有一个以上的硬链接,只删除其中一个硬链接并不影响inode本身和其它的链接,只有当文件的最后一个链接被删除后,被删除的文件的数据块才会被释放。
i_link(硬链接数量),为0,文件就被删除。
i_count(进程引用计数),为0,文件就被删除。
文件的删除条件为,i_link和i_count都为0,才可删除文件,虽然删除还是删除的inode节点,并不是真正删除内容,但是后面产生的新数据会覆盖这些数据
如果你删除文件,但是磁盘还是没有释放空间,多数因为进程还在调用这个文件,可以重启服务,或者通过重定向清空文件

硬链接知识小结:

1. 具有相同inode节点号的多个文件是互为硬链接文件
2. 删除硬链接文件或者删除源文件任意之一,文件实体并未被删除
3. 只有删除了源文件及所有对应的硬链接文件,文件实体才会被删除
4. 当所有的硬链接文件及源文件被删除后,再存放新的数据会占用这个文件的空间,或者磁盘fsck检查的时候,删除的数据也会被系统回收
5. 硬链接文件就是文件的另一个入口
6. 可以通过给文件设置硬链接文件,来防止重要文件被误删除
7. 通过执行命令“ln 源文件 硬链接文件”,即可完成创建硬链接
8. 硬链接文件是普通文件,因此可以用rm命令删除
9. 对于静态文件来讲,当对应硬链接数为0,文件就被删除,ls -l第三列就是

2. 软链接

快捷方式,就是一个指向

[root@Poppy joker]# ls -lhi a b
1717994 -rw-r--r-- 1 root root 0 Jun 20 14:50 a
1717995 lrwxrwxrwx 1 root root 1 Jun 20 14:50 b -> a
访问软链接的时候其实软链接保存了源文件的路径地址

软连接知识小结:

创建软连接源文件是需要存在的,要创建的软连接文件是不能存在的,是要用ln命令创建的
1. 软连接类似windows的快捷方式(可以通过readlink查看其指向)
2. 软连接类似一个文件文件,里面存放的是源文件的路径,指向源文件实体
3. 删除源文件,软连接文件依然存在,但是无法访问指向的源文件路径内容了
4. 失效的时候一般是白字红底闪烁提示
5. 执行命令“ln -s 源文件 软连接文件”,即可完成创建软链接(目标不能存在)
6. 软连接和源文件是不同类型的文件,也是不同的文件。inode号也不相同
7. 软连接文件的文件类型为l,可以用rm命令删除

目录软连接知识:

.为什么是当前目录,因为它与当前目录互为硬链接
[root@Poppy joker]# ls -aldi gameserver1 gameserver1/.
1703938 drwxr-xr-x 3 rsync rsync 4096 Jun 20 15:19 gameserver1
1703938 drwxr-xr-x 3 rsync rsync 4096 Jun 20 15:19 gameserver1/. ..为什么是上级目录,因为它与上级目录互为硬链接
[root@Poppy joker]# ls -aldi gameserver1 gameserver1/. gameserver1/2/..
1703938 drwxr-xr-x 3 rsync rsync 4096 Jun 20 15:19 gameserver1
1703938 drwxr-xr-x 3 rsync rsync 4096 Jun 20 15:19 gameserver1/.
1703938 drwxr-xr-x 3 rsync rsync 4096 Jun 20 15:19 gameserver1/2/.. 1. 对于目录,不可以创建硬链接,但是可以创建软链接
2. 对于目录的软连接是生产场景运维中的常用的技巧
3. 目录的硬链接不能跨越文件系统
4. 每个目录下面都有一个硬链接“.”号,和对应上级目录的硬链接”..“
5. 再敷目录里创建一个子目录,父目录的连接数增加1(每个子目录里都有..来指向父目录),但是再父目录里创建文件,父目录的连接数不会增加

第四列,五列:用户和用户组

linux是一个多用户,多任务的操作系统

用户的角色是通过uid和gid识别的,特别是uid,在linux系统运维工作中,一个uid是唯一标识一个系统用户的账号(相当于我们的身份证),用户系统账号的名称其实给人看的,linux系统能识别仅仅是uid和gid这样的数字

1. 超级用户

root是超级用户,uid和gid都是0,拥有最高的管理权限

2. 普通用户

500-65535 普通用户
su -root 角色切换
sudo ls 授权

3. 虚拟用户

1-499 虚拟用户
安装软件时候自带的用户,不能登录的用户

4. 用户相关的文件

# /etc/passwd        用户的配置文件
账号名称 账号密码 账号uid 账号gid 用户说明 用户家目录 shell解释器
[root@Poppy conf]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin # /etc/shadow 用户口令文件
账号名称 账号密码 最近更改密码的时间 禁止修改密码的天数 用户必须更改口令的天数 警告更改密码的期限 不活动时间 失效时间 标志 # /etc/group 组的配置文件
用户组名 用户组密码 gid 用户组成员
# /etc/gshadow 组的口令文件

第六列:大小

文件或者目录的大小

第七列 ,八列, 九列:时间

modify修改时间 mtime 一般修改文件内容的时候
change改变时间 ctime 文件的属性改变,大小,权限等
access访问时间 atime 访问文件内容的时候 [root@Poppy conf]# ls -l --time-style=long-iso
total 124
drwxr-xr-x 2 root root 4096 2018-06-13 16:46 extra
-rw-r--r-- 1 root root 18566 2018-06-13 16:05 httpd.conf
-rw-r--r-- 1 root root 18410 2018-06-13 15:07 httpd.conf.bak
-rw-r--r-- 1 root root 13077 2018-06-13 10:24 magic
-rw-r--r-- 1 root root 60847 2018-06-13 10:24 mime.types
drwxr-xr-x 3 root root 4096 2018-06-13 10:24 original 查看文件的时间属性
stat 后面接文件或者属性
[root@Poppy conf]# stat /joker/
File: ‘/joker/’
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: fd01h/64769d Inode: 1703937 Links: 6
Access: (0755/drwxr-xr-x) Uid: ( 1000/ rsync) Gid: ( 1000/ rsync)
Access: 2018-06-20 14:55:54.246604690 +0800
Modify: 2018-06-20 14:55:53.766590115 +0800
Change: 2018-06-20 14:55:53.766590115 +0800
Birth: -

第10列:文件名

不在inode里,而是在上级目录的block里

Linux文件属性,类型,ls -lhi解释行列的更多相关文章

  1. 文件属性和ls -lhi

    第1章 无法上网及拍错过程 远程连接拍错过程 1.         查看路是否通畅 2.         是否有拦击 iptables(防火墙) selinux 3.         查看是否有条件 ...

  2. Linux文件属性上

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

  3. linux文件属性详细说明

    1. Linux 文件属性概说: Linux 文件或目录的属性主要包括:文件或目录的节点.种类.权限模式.链接数量.所归属的用户和用户组.最近访问或修改的时间等内容: [root@localhost ...

  4. linux运维、架构之路-linux文件属性

    1.查看文件属性 ls -lhi 文件属性详细说明 1. 第一列: inode索引节点编号 2. 第二列:文件类型及权限 3. 第三列:硬链接数 4. 第四列:文件或目录所属的用户,即文件的所有者 5 ...

  5. linux文件属性描述(inode,block)

    1.ls   -lhi 文字解释: 第一列:inode索引节点编号(人的身份证,全国唯一) 系统读取文件时首先通过文件名找到inode,然后才能读取到文件内容. 第二列:文件类型及权限(共10个字符, ...

  6. linux 文件属性与权限

    内容源于: 鸟哥的linux私房菜 链接如下: Linux 的文件权限与目录配置 Linux 磁盘与文件系统管理 Linux 文件与目录管理 目录 Linux文件属性 [文件属性解析(SUID/SGI ...

  7. Linux文件属性相关补充及软硬连接

    第1章 文件属性相关 1.1 文件的属性 1.1.1 扩展名 windows  通过扩展名区分不同的类型的文件 linux 扩展名是给人类看的 方便我们区分不同类型文件 .conf      配置文件 ...

  8. Linux文件属性与管理

    文件或目录属性主要包括: 索引节点,inode 文件类型 文件权限 硬链接个数 归属的用户和用户组 最新修改时间 查看命令 ls -lhi /opt 图解: Inode索引节点号,(人的身份证,家庭地 ...

  9. 每天一个linux命令(24):Linux文件类型与扩展名

    Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念.我们通过一般应用程序而创建的比如file.txt.file.tar.gz ,这些文件虽然要用不同的程序来打开,但放在Linux文 ...

随机推荐

  1. Appium测试Webview

    通常情况下我们都是通过Android自带的tools下的UI automator viewer来获取控件或元素的xpath.class.id等来直接进行定位 如下面的“用户登录”按钮: 但是有一些并不 ...

  2. Falsk项目cookie中的 csrf_token 和表单中的 csrf_token实现

    Flask中请求体的请求开启CSRF保护可以按以下配置 from flask_wtf.csrf import CSRFProtect app.config.from_object(Config) CS ...

  3. ansible资料

    ansible系列教程-强烈推荐看完 ansible官方编写的例子 ansible_ui Jenkins配置ansible galaxy 官方文档 中文教程1 中文教程2 playbook进阶 YAM ...

  4. HAWQ中的行列转置

    行列转置是ETL或报表系统中的常见需求,HAWQ提供的内建函数和过程语言编程功能,使行列转置操作的实现变得更为简单. 一.行转列 1. 固定列数的行转列 原始数据如下: test=# select * ...

  5. UTL_DBWS包的创建和用法

    UTL_DBWS - Consuming Web Services in Oracle 10g In a previous article I presented a method for Consu ...

  6. OkHttp使用Get和Post访问服务器的工具类(一)

    首先来简单介绍一下okttp框架,类似于HttpUrlConnection,Android6.0以后,废弃了Apache Http Client,只有HttpUrlConnection和OkHttp了 ...

  7. (效果四)jst如何判断对象是否为空?

    前言:在实现业务逻辑的过程中,很多工程师都会遇到需要判断一个对象,数组是否为空的情景,很多时候我们在请求数据的时候都需要判断请求的对象数据是否为空,如果直接使用,在数据请求为空时,控制台就会报错.因此 ...

  8. scrollTop兼容处理

    使用jQuery2.0以下版本的scrollTop()函数来设置当然兼容性当然很好,但有时需要为滚动设置滑动效果.比如,使用animate函数,这里需要做些兼容性处理: 实例:http://sandb ...

  9. 《DSP using MATLAB》第7章开始 Example7.1

    FIR低通滤波器的设计要求示意图:

  10. BZOJ4565 [Haoi2016]字符合并

    题意 有一个长度为\(n\)的\(01\)串,你可以每次将相邻的\(k\)个字符合并,得到一个新的字符并获得一定分数.得到的新字符和分数由这\(k\)个字符确定.你需要求出你能获得的最大分数. \(n ...