文件的属性
[root@oldboy ~]# $ ll
-rw-------. 1 root root 1623 May 26 20:51 anaconda-ks.cfg
-rw-------. ①:文件类型与权限
1 ②:硬链接次数
root ③:所属用户
root ④:所属组
1623 ⑤:文件大小
May 26 20:51 ⑥:最新修改的时间与日期
anaconda-ks.cfg ⑦:文件或目录名称
文件的类型
通过颜色或者后缀判断文件类型不一定准确
ls -l 文件名
区分: 看第一个字符
-: 普通文件(文本, 二进制, 压缩, 图片, 日志等)
d: 目录文件
c: 字符设备文件 例如:打印机、终端
b: 设备文件(块设备文件)/dev/sda1, /dev/sda2 例如:硬盘、U盘、光驱
s: socket 套接字文件 一部分客户端和服务端建立连接(进程间通信)
p: 管道文件
l: 软链接文件(快捷方式)
举例:
[root@oldboy ~]# $ ll -d /etc/hosts /tmp /bin/ls /dev/sda /dev/tty1 /etc/grub2.cfg /dev/log /run/dmeventd-client
-rwxr-xr-x. 1 root root 117608 Aug 20 2019 /bin/ls
srw-rw-rw-. 1 root root 0 Jun 2 08:45 /dev/log
brw-rw----. 1 root disk 8, 0 Jun 2 08:45 /dev/sda
crw--w----. 1 root tty 4, 1 Jun 2 08:45 /dev/tty1
lrwxrwxrwx. 1 root root 22 May 26 20:45 /etc/grub2.cfg -> ../boot/grub2/grub.cfg
-rw-r--r--. 1 root root 158 Jun 7 2013 /etc/hosts
prw-------. 1 root root 0 Jan 20 10:36 /run/dmeventd-client
drwxrwxrwt. 7 root root 93 Jun 2 13:29 /tmp
使用命令区分
file 文件
## txt文档文件
[root@oldboy ~]# $ file /root/info.txt
/root/info.txt: ASCII text
## shell script 脚本文件
[root@oldboy ~]# $ file check_student.sh
check_student.sh: Bourne-Again shell script, UTF-8 Unicode text executable
## 块设备文件
[root@oldboy ~]# $ file /dev/sda
/dev/sda: block special
## 目录文件
[root@oldboy ~]# $ file /root
/root: directory
## 管道文件
[root@oldboy ~]# $ file /run/systemd/inhibit/1.ref
/run/systemd/inhibit/1.ref: fifo (named pipe)
## 字符设备
[root@oldboy ~]# $ file /dev/tty
/dev/tty: character special
## 套接字文件
[root@oldboy ~]# $ file /dev/log
/dev/log: socket
注意:Linux中的文件扩展名仅仅是为了运维人员便于识别,不具有其它含义
系统链接文件
元数据
什么是元数据
用来形容一个文件的属性,被称之为该文件的元数据。
例如:文件的大小、文件的权限、文件的创建时间……
在Linux中文件被分为两部分:inode
、block
block:文件内容大小占用的磁盘空间(一个block默认4k)
inode:文件的元数据占用的磁盘空间
软链接文件
软链接:软链接相当于windows的快捷方式,软链接文件会将inode
指向源文件的block
当我们访问这个软链接文件时,其实就是在访问源文件的本身。
1.那么当我们对一个文件创建多个软链接时,其实就是多个inode指向同一个block。
2.那么当我们删除软链接文件时,其实只是删除了一个inode的指向,并不会对源文件造成影响。
3.如果我们删除的是源文件,那么该文件的所有软链接文件都会失效。
4.软链接文件的名字可以和源文件不同,修改软链接文件,源文件也会被修改
5.软链接文件的inode号和源文件的inode号不同
如何创建软链接
## 语法
ln [选项] 源文件 快捷方式
ln -s /root/a.html /tmp/b.xxx
## 查看inode的方法
[root@oldboy ~]# $ ll -i /root/a.html
33618915 -rw-r--r--. 1 root root 64 Jun 3 11:04 /root/a.html
软链接文件的应用场景
- 不方便移动的大文件
- 软件升级
- 代码发布
- 数据回滚
- 程序读取
硬链接文件
硬链接文件:若一个inode
号对应多个文件名,则称这些文件为硬链接。
# 创建方式一
[root@oldboy /opt]#
$ ln /opt/ld.txt /tmp/
# 创建方式二
[root@oldboy /opt]#
$ ln /opt/ld.txt /tmp/xxx
硬链接的特点
1.硬链接文件之间的inode号都相同
2.硬链接之间不能跨分区创建
3.硬链接文件不受源文件的影响
区别
特性 | 硬链接 | 软链接 |
---|---|---|
inode | 相同 | 不同 |
跨分区创建 | 不可以 | 可以 |
创建命令 | ln | ln -s |
删除源文件 | 不受影响 | 受影响 |
给目录创建链接 | 不可以 | 可以 |
企业级面试题
面试题:当前磁盘空间还剩余500G,但是就无法往里面写入数据,报错,磁盘空间满了。
1T磁盘,用户数据把inode沾满了
df -i
/dev/loop0 1024 1024 0 100% /data
inode被占满了
我们创建文件,需要使用inode存放文件的元数据,即便是有block也无法创建新文件
计算目录的硬链接数
一个新创建的空目录,硬链接数:2
如果在该目录下创建一个新的空目录,硬链接数:3
因为新创建的子目录有..