day11文件的属性及类型
day11文件的属性及类型
✓ 14:24:48 root@localhost.localdomain,10.0.0.158:/srv # ll
total 284
d rwxr-xr-x. 2 root root 42 Mar 29 11:29 abc
- rw-r--r--. 1 root root 239 Mar 24 14:49 guolv.txt
l rwxrwxrwx. 1 root root 7 Mar 29 14:24 oldboy -> /oldboy
#以空格为分隔符第一列:
文件类型:
# - 普通文件(touch)
# d 目录(mkdir)
# l 软链接文件(类似Windows快捷方式)(ln)
------------------------------------------------------------
c:设备文件(char字符设备文件)和字符相关的设备;(打印机、终端)
b:设备文件(block块设备文件)和存储相关的设备;(磁盘分区、硬盘、u盘)
s:socket安全套接字文件,网络编程
p:pipe管道文件,父进程与子进程之间的通信文件
# 以空格为分隔符第二例:
文件的权限:Permission denied(权限被拒绝)
rwxr-xr-x
满权限:rwxrwxrwx
r:read 读
w:write 写
x: exce 执行
-:该权限为没有权限
# 以空格为分隔符第三列:
指该文件的硬链接数
# 以空格为分隔符第四列:
该文件的属主
# 以空格为分隔符第五列
该文件的属组
# 以空格为分隔符第六列
该文件的大小
# 以空格为分隔符第七列
文件的创建时间
# 最后一列
文件名字
文件类型查看命令
file
# 语法
file [选项] 文件...
#举例
130 ✗ 18:41:38 root@localhost.localdomain,10.0.0.158:/srv # file abc
abc: directory
0 ✓ 18:56:07 root@localhost.localdomain,10.0.0.158:/srv # file jiequ.txt
jiequ.txt: ASCII text
0 ✓ 18:56:39 root@localhost.localdomain,10.0.0.158:/srv # file oldboy
oldboy: symbolic link to `/oldboy'
0 ✓ 18:57:35 root@localhost.localdomain,10.0.0.158:/srv # file search\?q\=图片
search?q=图片: HTML document, UTF-8 Unicode text, with very long lines, with CRLF, LF line terminators
系统链接文件
# 一个文件再Linux中,会被分为两个部分
真实数据:文件中真实内容
元数据:用来形容文件的数据
# 一个文件在Linux中,存储也会被分为两部分
inode:用来储存文件的元数据
block:用来储存文件的真实数据(一个block是4k)
查看磁盘空间
# df
# 选项
-h :人类可读
-i :查看inode空间
# 举例
# 查看磁盘的block
0 ✓ 19:04:30 root@localhost.localdomain,10.0.0.158:/srv # df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 476M 0 476M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/nvme0n1p3 19G 1.8G 17G 10% /
/dev/nvme0n1p1 497M 148M 350M 30% /boot
tmpfs 98M 0 98M 0% /run/user/0
# 查看磁盘的inode
✓ 19:13:37 root@localhost.localdomain,10.0.0.158:/srv # df -hi
Filesystem Inodes IUsed IFree IUse% Mounted on
devtmpfs 119K 380 119K 1% /dev
tmpfs 122K 1 122K 1% /dev/shm
tmpfs 122K 720 121K 1% /run
tmpfs 122K 16 122K 1% /sys/fs/cgroup
/dev/nvme0n1p3 9.3M 39K 9.3M 1% /
/dev/nvme0n1p1 250K 333 250K 1% /boot
tmpfs 122K 1 122K 1% /run/user/0
链接的种类
- 软连接文件
- 软连接相当于windows的快捷方式,软连接文件会将indoe指向源文件的block
ls
-i:查看该文件的inode号
# 举例
19:52:20 root@localhost.localdomain,10.0.0.158:~ # ls -li
total 880
17462662 drwxr-xr-x. 2 root root 6 Mar 21 11:17 abc
33574978 -rw-------. 1 root root 1469 Mar 16 14:54 anaconda-ks.cfg
# 创造软连接的命令
ln:link 链接,创建链接文件
-s:soft 软,创建软连接文件
# ln -s 源文件 链接文件的位置
# 举例:
? 19:18:49 root@localhost.localdomain,10.0.0.158:/srv # ln -s /oldboyedu/ /srv/
0 ? 19:32:32 root@localhost.localdomain,10.0.0.158:/srv # ll
total 284
lrwxrwxrwx. 1 root root 7 Mar 29 14:24 oldboy -> /oldboy
# 软连接文件,会受到源文件的影响,如果源文件删除,软连接也无法使用
# 举例:
0 ✓ 19:49:25 root@localhost.localdomain,10.0.0.158:~ # ln -s /root/ooo /srv
0 ✓ 19:49:46 root@localhost.localdomain,10.0.0.158:~ # ll /srv
total 0
lrwxrwxrwx. 1 root root 9 Mar 29 19:49 ooo -> /root/ooo
0 ✓ 19:50:03 root@localhost.localdomain,10.0.0.158:~ # rm -f ./ooo
0 ✓ 19:50:16 root@localhost.localdomain,10.0.0.158:~ # ll /srv
total 0
lrwxrwxrwx. 1 root root 9 Mar 29 19:49 ooo -> /root/ooo
✓ 19:50:25 root@localhost.localdomain,10.0.0.158:~ # cat /srv/ooo
cat: /srv/ooo: No such file or directory
- 硬链接文件
- 若一个inode号对应多个文件名,则称这些文件为硬文件,换句话,硬链接就是一个文件多了很多个别名
# 创建硬链接命令
ln
ln 源文件 链接文件位置
#举例
✓ 20:00:20 root@localhost.localdomain,10.0.0.158:~ # ln anaconda-ks.cfg /srv/
0 ✓ 20:00:50 root@localhost.localdomain,10.0.0.158:~ # ln iii /srv
# 查看
0 ✓ 20:01:33 root@localhost.localdomain,10.0.0.158:~ # ll /srv/
total 8
-rw-------. 2 root root 1469 Mar 16 14:54 anaconda-ks.cfg
-rw-r--r--. 2 root root 43 Mar 25 09:43 iii
#查看文件内容
0 ✓ 20:01:39 root@localhost.localdomain,10.0.0.158:~ # cat iii
# 3 4
# 6 7
# 2 8
# 1 9
# 9 3
# 5 6
# 7 8
0 ✓ 20:03:00 root@localhost.localdomain,10.0.0.158:~ # cat /srv/iii
# 3 4
# 6 7
# 2 8
# 1 9
# 9 3
# 5 6
# 7 8
# 特性
1.硬链接文件,不会受到原文件的影响
2.所有硬链接文件的inode号与源文件相同
3.修改一个文件,其他文件都会改变
4.不允许给目录创建硬链接
5.默认情况下,新创建的目录,有两个硬链接,一个是目录本身,一个是该目录下的.目录
# 报错
✗ 20:06:17 root@localhost.localdomain,10.0.0.158:~ # ln abc /srv
ln: ‘abc’: hard link not allowed for directory
# 目录不允许创建硬链接
硬链接和软链接的区别
| 区别 | 硬链接 | 软链接 |
|---|---|---|
| 创建命令 | ln | ln -s |
| 对象 | 只能对普通文件创建 | 普通文件和目录 |
| 是否受到源文件影响 | 否 | 是 |
| inode号 | 相同 | 不同 |
| 跨分区创建 | 不可以 | 可以 |
企业面试题
当前磁盘空间还剩余500G,但是就无法往里面写入数据,报错,磁盘空间满了。
# 首先磁盘存储被划分为两块
inode:存储文件的元数据
block:存储文件的真实数据
#在问题当中剩余500G,这500G指的是block
#应该是inode被占满了
#这种情况,一般是系统中,小文件太多导致的
#找到系统中的小文件(没用的),并删除
#使用find命令
演示
# 查看inode
✗ 20:08:23 root@localhost.localdomain,10.0.0.158:~ # df -hi
Filesystem Inodes IUsed IFree IUse% Mounted on
devtmpfs 119K 380 119K 1% /dev
tmpfs 122K 1 122K 1% /dev/shm
tmpfs 122K 720 121K 1% /run
tmpfs 122K 16 122K 1% /sys/fs/cgroup
/dev/nvme0n1p3 9.3M 39K 9.3M 1% /
/dev/nvme0n1p1 250K 333 250K 1% /boot
tmpfs 122K 1 122K 1% /run/user/0
# 从/dev/zero中取出1024k数据,保存到/opt/disk文件中
✓ 20:15:33 root@localhost.localdomain,10.0.0.158:~ # dd if=/dev/zero of=/opt/disk bs=1K count=1024
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.00285502 s, 367 MB/s
# 查看/opt/disk大小为1M
✗ 20:18:54 root@localhost.localdomain,10.0.0.158:~ # ll -h /opt/disk
-rw-r--r--. 1 root root 1.0M Mar 29 20:18 /opt/disk
# 格式化,指定inode
✗ 20:19:58 root@localhost.localdomain,10.0.0.158:~ # mkfs.ext4 -i 1024 /opt/disk
mke2fs 1.42.9 (28-Dec-2013)
/opt/disk is not a block special device.
Proceed anyway? (y,n) y
Filesystem too small for a journal
Discarding device blocks: done
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
1024 inodes, 1024 blocks
51 blocks (4.98%) reserved for the super user
First data block=1
Maximum filesystem blocks=1048576
1 block group
8192 blocks per group, 8192 fragments per group
1024 inodes per group
Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
# 在/下创建一个目录data1
✓ 20:20:06 root@localhost.localdomain,10.0.0.158:~ # mkdir /dat1
# 刚才的分区,挂载到/data1下
✓ 20:20:37 root@localhost.localdomain,10.0.0.158:~ # mount -t ext4 -o loop /opt/disk /dat1/
# 查看新分区inode大小
✓ 20:20:55 root@localhost.localdomain,10.0.0.158:~ # df -hi
Filesystem Inodes IUsed IFree IUse% Mounted on
devtmpfs 119K 384 119K 1% /dev
tmpfs 122K 1 122K 1% /dev/shm
tmpfs 122K 726 121K 1% /run
tmpfs 122K 16 122K 1% /sys/fs/cgroup
/dev/nvme0n1p3 9.3M 39K 9.3M 1% /
/dev/nvme0n1p1 250K 333 250K 1% /boot
tmpfs 122K 1 122K 1% /run/user/0
/dev/loop0 1.0K 11 1013 2% /dat1
# 查看新分区block大小
✓ 20:21:03 root@localhost.localdomain,10.0.0.158:~ # df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 476M 0 476M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/nvme0n1p3 19G 1.8G 17G 10% /
/dev/nvme0n1p1 497M 148M 350M 30% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/loop0 891K 21K 799K 3% /dat1
# 演示inode被沾满
[root@localhost data1]# touch {1001..1014}
touch: cannot touch ‘1014’: No space left on device
[root@localhost data1]# touch zlstouch: cannot touch ‘zls’: No space left on device
[root@localhost data1]# touch zls
touch: cannot touch ‘zls’: No space left on device
[root@localhost data1]# df -h
Filesystem Size Used Avail Use% Mouted on
/dev/sda3 19G 1.7G 17G 9% /
devtmpfs 476M 0 476M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 39M 449M 8% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda1 497M 120M 378M 25% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/loop0 891K 39K 781K 5% /data1
# 报错
No space left on device :该设备上没有可用的空间
思维导图

浙公网安备 33010602011771号