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 :该设备上没有可用的空间

思维导图

posted @ 2022-03-29 20:44  hjx、贤  阅读(43)  评论(0)    收藏  举报