Linux文件的属性及类型

Linux文件属性及类型

1.Linux系统文件属性

Linux系统中文件或目录的属性主要包括:文件或目录的索引节点(inode)、类型、权限属性、链接数、所归属的用户和用户组、最近修改时间等内容;在 Linux 中我们可以使用 ll 或者 ls –l 命令来显示一个文件的属性以及文件所属的用户和组,如:

d rwxr-xr-x. 4 root root     71 Mar 25 19:01 one
- rw-r--r--. 1 root root    119 Mar 25 03:42 shi.txt
1|    2   |3|4| 5 |  6  |   7  |      8     |  9

在 Linux 中第一列字符代表这个文件是目录、文件或链接文件等等。

  • 当为 d 则是目录(directory)
  • 当为 - 则是普通文件;
  • 若是 l 则表示为链接文档(Link File);
  • 若是 b 则是设备文件(block块设备文件)和存储相关的设备,举例:硬盘,U盘,磁盘分区
  • 若是 c 则表示为设备文件(char字符设备文件)和字符相关的设备,举例:打印机,终端
  • 若是 s 则表示为socket安全套接字文件,网络编程
  • 若是 p 则表示为pipe管道文件,父进程与子进程之间的通信文件

第二列字符表示用户权限

  • r 代表可读(read)
  • w 代表可写(write)
  • x 代表可执行(execute)
  • -该权限位上没有权限

第四列指该文件的硬链接数

第五列文件或目录所属的用户(属主)

chown:更改文件属主
语法:
	chown [–R] 属主名 文件名

第六列文件或目录所属的用户所归属的组;

chgrp:更改文件属组
语法:
    chgrp [-R] 属组名 文件名
    
 -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。

第七列文件或目录的大小;

其中大小默认单位为字节,想要转换储存单位可以用命令 ls -h

第八列文件或目录的修改时间

这里的时间是该文件的最后被更新(包括文件创建、内容更新、文件名更新等),可用如下命令查看文件的修改,访问,创建的时间
   stat + 文件名.

第九列实际的文件名或目录名

2.文件类型查看命令file

 语法:
 file [选项] 文件...
 
 举例:
 [root@localhost ~]# file pikachupikachu: JPEG image data, JFIF standard 1.01
 
 root@localhost ~]# file /dev/sda/dev/sda: block speci
 
 [root@localhost ~]# file /dev/pts/0/dev/pts/0: character speci
 
注意: Linux文件扩展名不代表任何含义, 仅仅是为了运维人员便于识别

3.系统链接文件

在Linux中,一个文件数据可分为两大类:数据元数据

  • 数据:泛指普通文件中的实际数据
  • 元数据:用来描述一个文件的特征的系统数据

在Linux中,一个文件的存储也会被分为两部分:inodeblock

  • inode:用来存储文件的元数据
  • block:用来存储文件的真实数据,一个block空间是4k
ext4 文件系统会把分区主要分为两大部分(暂时不提超级块):小部分用于保存文件的 inode (i 节点)信息;剩余的大部分用于保存 block 信息。

inode 的默认大小为 128 Byte,用来记录文件的权限(r、w、x)、文件的所有者和属组、文件的大小、文件的状态改变时间(ctime)、文件的最近一次读取时间(atime)、文件的最近一次修改时间(mtime)、文件的数据真正保存的 block 编号。每个文件需要占用一个 inode。大家如果仔细查看,就会发现 inode 中是不记录文件名的,那是因为文件名记录在文件所在目录的 block 中。

block 的大小可以是 1KB、2KB、4KB,默认为 4KB。block 用于实际的数据存储,如果一个 block 放不下数据,则可以占用多个 block。例如,有一个 10KB 的文件需要存储,则会占用 3 个 block,虽然最后一个 block 不能占满,但也不能再放入其他文件的数据。这 3 个 block 有可能是连续的,也有可能是分散的。
由此,我们可以知道以下 2 个重要的信息:
1.每个文件都独自占用一个 inode,文件内容由 inode 的记录来指向;
2.如果想要读取文件内容,就必须借助目录中记录的文件名找到该文件的 inode,才能成功找到文件内容所在的 block 块;

查看磁盘空间命令

查看磁盘空间命令:
    df
    
选项:
    -h:human人类可读
    -i:查看inode空间
    
举例:
查看磁盘的block:
    [root@localhost ~]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda3        19G  1.2G   18G   7% /
    devtmpfs        476M     0  476M   0% /dev
    tmpfs           487M     0  487M   0% /dev/shm
    tmpfs           487M  7.6M  479M   2% /run
    tmpfs           487M     0  487M   0% /sys/fs/cgroup
    /dev/sda1       473M  119M  355M  25% /boot
    tmpfs            98M     0   98M   0% /run/user/0
    
查看磁盘的inode:
    [root@localhost ~]# df -hi
    Filesystem     Inodes IUsed IFree IUse% Mounted on
    /dev/sda3        9.3M   29K  9.3M    1% /
    devtmpfs         119K   373  119K    1% /dev
    tmpfs            122K     1  122K    1% /dev/shm
    tmpfs            122K   700  121K    1% /run
    tmpfs            122K    16  122K    1% /sys/fs/cgroup
    /dev/sda1        238K   326  238K    1% /boot
    tmpfs            122K     1  122K    1% /run/user/0

4.硬链接与软连接

Linux系统引入了两种链接:

  1. 硬链接(hard link)

  2. 软链接(又叫:符号链接即soft link或symbolic lin)

软连接:

软链接相当于windows的快捷方式,软链接文件会将inode指向源文件的block

  • 当我们访问这个软链接文件时,其实就是在访问源文件的本身
  • 那么当我们对一个文件创建多个软链接时,其实就是多个inode指向同一个block
  • 那么当我们删除软链接文件时,其实只是删除了一个inode的指向,并不会对源文件造成影响。
  • 如果我们删除的是源文件,那么该文件的所有软链接文件都会失效
显示iNode编号命令
ls -i  

创建软链接文件命令:
ln -s  源文件 链接文件的位置

一个文件创建多个软连接:
[root@localhost ~]# ln -s /root/1.txt /tmp/
[root@localhost ~]# ll /tmp/
total 196
lrwxrwxrwx 1 root root     11 Mar 2910:54 1.txt -> /root/1.tx

[root@localhost ~]# ln -s /root/1.txt /tmp/2.txt
[root@localhost ~]# ll /tmp/
total 196
lrwxrwxrwx 1 root root  11 Mar 2910:54 1.txt -> /root/1.txt
lrwxrwxrwx 1 root root  11 Mar 2910:55 2.txt -> /root/1.txt

软链接的应用场景

  1. 软件升级

  2. 代码发布

  3. 不方便移动的目录

  4. 数据回滚

  5. 程序读取

硬链接:

若一个inode号对应多个文件名,则称这些文件为硬链接。换句话说,硬链接就是同一个文件使用了多个别名

特性

  1. 硬链接文件,不会受到原文件的影响

  2. 所有硬链接文件的inode号与源文件相同

  3. 修改一个文件,其他文件都会改变

  4. 不允许给目录创建硬链接5.默认情况下,新创建的目录,有两个硬链接,一个是目录本身,一个是该目录下的.目录

1)创建命令不同
    软链接:ln -s
    硬链接:ln
    
2)目录不能创建硬链接,并且硬链接不可以跨越系统的分区,软链接可以

3)硬链接文件与源文件inode相同,软链接文件与源文件inode不同

4)删除软链接文件,对源文件无影响,但是删除软链接源文件对软链接文件有影响

5)删除硬链接文件,对源文件也无影响,并且删除源文件,对硬链接文件也无影响

拓展:企业面试题

当前磁盘空间还剩余500G,但是就无法往里面写入数据,报错,磁盘空间满了

回答:
1.首先磁盘存储被划分为两块
inode:存储文件的元数据
block:存储文件的真实数据

2.在问题当中剩余500G,这500G指的是block

3.应该是inode被占满了

4.这种情况,一般是系统中,小文件太多导致的

5.找到系统中的小文件(没用的),并删除

posted @ 2022-03-29 19:05  Gie  阅读(1900)  评论(0编辑  收藏  举报