文件的属性
文件字符类型 |
文件类型 |
- |
file 普通文件 |
d |
directory 目录 |
c |
char 字符设备 |
b |
block 块设备 |
l |
link 链接文件 |
s |
socket 安全 (套接字)文件 |
p |
pipe 管道文件 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| 硬链接数 所属用户 所属用户组 文件大小 时间 文件名 - rw-r--r--. 1 root root 289 Apr 7 16:40 11.txt d rwxr-xr-x. 4 root root 41 Apr 3 18:04 zls
[root@localhost ~]# ll /dev/null -d crw-rw-rw-. 1 root root 1, 3 Apr 7 16:21 /dev/null [root@localhost ~]# ll /dev/sda1 brw-rw----. 1 root disk 8, 1 Apr 7 16:21 /dev/sda1 [root@localhost ~]# ll /run/systemd/initctl/fifo prw-------. 1 root root 0 Apr 7 16:21 /run/systemd/initctl/fifo [root@localhost ~]# ll /dev/log srw-rw-rw-. 1 root root 0 Apr 7 16:21 /dev/log [root@localhost ~]# ll -d zls/ drwxr-xr-x. 4 root root 41 Apr 3 18:04 zls/ [root@localhost ~]# ll -rw-r--r--. 1 root root 289 Apr 7 16:40 11.txt
|
使用file命令来鉴别文件类型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| [root@localhost ~]# ll *.jpg -rw-r--r--. 1 root root 20735 Mar 13 09:08 w700d1q75cms.jpg -rw-r--r--. 1 root root 4 Apr 7 19:50 zls.jpg [root@localhost ~]# file w700d1q75cms.jpg w700d1q75cms.jpg: JPEG image data, EXIF standard [root@localhost ~]# file zls.jpg zls.jpg: empty [root@localhost ~]# echo 111 > zls.jpg [root@localhost ~]# file zls.jpg zls.jpg: ASCII text
[root@localhost ~]# file /dev/null /dev/null: character special [root@localhost ~]# file /dev/sda1 /dev/sda1: block special [root@localhost ~]# file /run/systemd/initctl/fifo /run/systemd/initctl/fifo: fifo (named pipe) [root@localhost ~]# file /dev/log /dev/log: socket [root@localhost ~]# file /root/zls /root/zls: directory
|
系统链接文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| 文件有文件名和数据,在Linux上被分成两个部分:用户数据(user data)与元数据(metadata)
用户数据:文件数据块(data block),数据块是记录文件真实内容的地方,我们将其称为#Block 元数据:文件的附加属性,例如:文件大小,创建时间,属组,属主等,我们称其为#Inode 在Linux中,inode是文件元数据的一部分,但其并不包含文件名,inode号即索引节点号 文件名仅是为了方便人们的记忆和使用,系统或者程序通过inode号寻找正确的文件数据块。
在Linux中,inode(索引节点)是文件系统中的一个数据结构,用于存储文件或目录的元数据信息,包括文件类型、权限、所有者、大小、数据块的位置等。它通过一个唯一的标识符来标识文件或目录,并且在文件系统中具有固定的位置。简而言之,inode是文件系统中用于描述文件或目录属性的数据结构。
cat 1.txt aaa -rw-r--r--. 1 root root 583919 Oct 29 02:33 1.txt >>==元数据inode aaa 真实数据 Block
|
文件读取流程
block介绍
1 2 3 4 5 6 7
| block默认大小为4k
一部分存储元数据,存储元数据的部分叫做inode,每个文件都有一个自己的inode号,这个inode号可以理解为文件存储在磁盘上的房间号 一部分存储真实数据,存储真实数据的部分叫做block,一个block默认是4k
|
软链接
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 软链接 ==> 符号链接 soft_link symbolic link ln -s 源文件(要给谁创建快捷方式) 目标文件(快捷方式的位置) [root@localhost ~]# ll -i zls111 1.txt 16803484 -rw-r--r--. 1 root root 279 Apr 7 17:55 1.txt 16799371 lrwxrwxrwx. 1 root root 11 Apr 7 22:34 zls111 -> /root/1.txt [root@localhost ~]# ln -s /root/1.txt /opt 总结: 1)创建软链接时,直接接一个已存在的目录,以源文件名字来命名新的文件名创建到指定目录下 2)创建软链接时,指定一个目录下的文件,如果该文件不存在,则创建软链接并改名 2)创建软链接时,指定一个目录下的文件,如果该文件存在,则报错,无法创建 [root@localhost ~]# ln -s /root/1.txt /tmp/1.txt ln: failed to create symbolic link ‘/tmp/1.txt’: File exists
|
硬链接
若一个 inode 号对应多个文件名,则称这些文件为硬链接。换句话说,硬链接就是同一个文件使用了多 个别名,如下图所示 hard link 就是file的一个别名,他们有共同的 inode
1 2 3 4 5 6 7 8 9 10 11
| ln 源文件(要给谁创建硬链接) 目标文件(硬链接的位置) [root@localhost ~]# ll -i total 24 16797812 lrwxrwxrwx. 1 root root 11 Apr 7 23:35 123 -> /root/1.txt 16797823 -rw-r--r--. 6 root root 4 Apr 7 23:37 1.txt 16797823 -rw-r--r--. 6 root root 4 Apr 7 23:37 abc 16797823 -rw-r--r--. 6 root root 4 Apr 7 23:37 abc1 16797823 -rw-r--r--. 6 root root 4 Apr 7 23:37 abc2 16797823 -rw-r--r--. 6 root root 4 Apr 7 23:37 abc3 16797823 -rw-r--r--. 6 root root 4 Apr 7 23:37 abc4
|
硬链接和软链接的区别
区别 |
硬链接 |
软链接 |
命令 |
ln |
ln -s |
inode |
和源文件inode号相同 |
和源文件inode号不同 |
源文件 |
删除源文件不影响链接文件 |
删除源文件影响链接文件 |
跨分区创建 |
不能 |
可以 |
目录创建 |
不能 |
可以 |
文件类型 |
普通文件 |
l 链接文件 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| [root@localhost ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda3 8913920 1609880 7304040 19% / devtmpfs 487048 0 487048 0% /dev tmpfs 497948 0 497948 0% /dev/shm tmpfs 497948 7748 490200 2% /run tmpfs 497948 0 497948 0% /sys/fs/cgroup /dev/sda1 508580 122216 386364 25% /boot tmpfs 99592 0 99592 0% /run/user/0
[root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 8.6G 1.6G 7.0G 19% / 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 497M 120M 378M 25% /boot tmpfs 98M 0 98M 0% /run/user/0
[root@localhost ~]# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda3 4462080 34791 4427289 1% / devtmpfs 121762 380 121382 1% /dev tmpfs 124487 1 124486 1% /dev/shm tmpfs 124487 699 123788 1% /run tmpfs 124487 16 124471 1% /sys/fs/cgroup /dev/sda1 256000 326 255674 1% /boot tmpfs 124487 1 124486 1% /run/user/0 [root@localhost ~]# df -ih Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda3 4.3M 34K 4.3M 1% / devtmpfs 119K 380 119K 1% /dev tmpfs 122K 1 122K 1% /dev/shm tmpfs 122K 699 121K 1% /run tmpfs 122K 16 122K 1% /sys/fs/cgroup /dev/sda1 250K 326 250K 1% /boot tmpfs 122K 1 122K 1% /run/user/0
|
1 2
| CentOS 6:默认使用的是ext4的文件系统13。 CentOS 7:默认使用的是xfs(eXtended File System)文件系统类型
|
当前磁盘空间还剩余500G,但是就无法往里面写入数据,报错,磁盘空间满了。
1 2
| 1.inode号储存磁盘空间不足 2.block储存用户真实数据磁盘空间不足
|