话不多说,直接开始!
ls -li #显示inode号码
[root@VMware-koten ~]#ls -li
total 8
34425540 -rw-r--r-- 1 root root 1 Mar 5 16:09 123
34425538 -rw-r--r-- 1 root root 31 Mar 5 16:09 test.txt
[root@VMware-koten ~]#
第一列:inode号
第二列:文件的类型 d是目录 l是链接文件 -是普通文件
第三列:9位文件权限 rwx 读 写 执行 -表示无此权限
第四列:硬链接的个数
第五列:文件的属主
第六列:文件的属组
第七列:文件的大小 使用ls -h可以查看
第八列:文件时间
第九列:文件名称
第一列:inode号码
作用:类似身份证号码
类似藏宝图,标明具体宝藏的位置
书本的目录
存储了文件的指针指向,指向了文件内容具体的位置
先找到inode号,才能找到真正存储数据的位置,为了快速查到文件的内容
找到文件名称,相当于找到了indoe号
磁盘最小存储单位是512字节
磁盘扇区大小是512字节
block,是块存储,具体存储数据的
安装系统分区或格式化系统自动生成了定量的inode和block
inode存放具体内容的指针指向 查看 df -i
block具体存放数据的地方 查看 df -h
创建一个文件最少需要一个inode和一个block,
是否能往磁盘写东西一个是inode不能满一个是block不能满,其中一个满也不行
小文件多了,inode会满,block不会满
正常都是block满,inode不满
扩展下查找文件流程:
cat /etc/passwd
passwd文件名称是放在上级目录etc下的block中
etc目录文件名称又放在上级目录根目录的block中
目录有inode号,inode号存放指针指向,通过指针指向找存放在block里面的的目录下的文件名称
文件名称有inode号,inode号存放指针指向,通过指针指向找存放在block里面的的目录下的文件名称
文件名称里又有inode号,inode号存放指针指向,通过指针指向找存放在block里面的的目录下的文件名称
循环往复,一直找,最终找到文件或者目录
第二列:文件的类型
作用:表示文件的唯一方式(windows)
在Linux系统中是为了给我们看,改后缀没有任何影响,即使没有影响,也别瞎命名
1:- 普通文件
普通文件:.txt .log /etc/hosts /etc/resolv.
二进制命令文件:/usr/bin/ls /usr/bin/touch
数据文件:压缩文件、视频文件、音频文件、rpm包
2:d 目录
3:l 链接文件 软连接 类似windows的快捷方式
4:b 块设备 block /dev/sr0 /dev/sda
5:c 字节设备 /dev/urandom 类似白洞,可以一直往外吐字符串 可以head去看
重点: /dev/null 类似黑洞,可以将命令执行结果输入进去,作用就是接收没用的东西,执行结果不想看到
$? 为上一条命令的返回结果,0为成功,非0为失败
/dev/zero 可以生成数据,生成块设备
dd if=/dev/zero of=1g.txt bs=1m count=1000
生成1g的块设备文件,没法看,是乱码,做测试用
dd 命令,生成大文件用
if:input file 数据从哪个文件输入
of:output file 输出内容到文件
bs:block size 每次输入多大
count:总共输入多少次
6:p 管道设备 可以通过find / -type p 寻找
[root@VMware-koten ~]#find / -type p
/run/systemd/sessions/33.ref
/run/systemd/sessions/5.ref
/run/systemd/initctl/fifo
[root@VMware-koten ~]#find / -type p |xargs ls -l
prw------- 1 root root 0 Mar 3 08:36 /run/systemd/initctl/fifo
prw------- 1 root root 0 Mar 6 08:22 /run/systemd/sessions/33.ref
prw------- 1 root root 0 Mar 3 11:19 /run/systemd/sessions/5.ref
[root@VMware-koten ~]#
7:s 接口文件
第三列:文件权限 9位权限位
决定文件是否可读可写可执行
r read 文件可读 cat less vim more
w write 文件可写 vim echo
x excute 可执行 脚本是否可执行(文件中放了命令,称为脚本)
/etc/rc.local 系统的可执行文件
系统执行脚本是按照路径方式
如果可执行文件权限被拒绝,需要加权限
chomd +x /root/test.sh
三位为一组权限:
前三位:属主(主任 文件的所有者对权限的作用)自己
rwxrwxrwx
rw-r--r--
中三位:属组权限(和主人在同一小组的权限的作用)类似家庭,默认只有我们自己
r-- #只读 没有其他权限
后三位:其他用户权限(陌生人对于我笔记本的权限)
r-- #只读 没有其他权限
属组权限意义不大,因为跟陌生人权限一样
扩展:对于文件来讲最高的权限是rw-rw-rw-
使用数字来表示文件的权限:r=4 w=2 x=1
rw-r--r-- 644 也需要会往会算
将文件权限每三位进行相加得到文件的权限
对于可执行文件来讲最高的权限是rwxrwxrwx 777
第四列:硬链接的个数
作用:保护系统文件的安全 类似于备份
特点:1、具有相同inode号,互为硬链接,具有相同地址的位置
2、创建硬链接ln源文件 硬链接名称(源文件必须已存在)
3、修改一个文件 其他文件也会变化
4、类似超市有多个门 东门 西门 不管从哪个门进,看到的东西是一样的
5、类似秦始皇的宝藏有多个藏宝图,多份,但指向同一个位置
6、类似书有多个相同的目录,指向的页数相同
名称不一样,但是inode号一样
7、目录不能创建硬链接,不支持,目录默认的硬链接数是2
因为目录中.和该目录的inode号一样,目录和.互为硬链接
如果目录里面还有目录,会有三个硬链接,因为多了个..
三个一个是目录本身,一个是进入目录的.,一个是进入目录下目录的..
在目录的下面创建不行,只能在一级目录下面
8.删除其中一个硬链接,不影响其他文件
9.硬链接不能跨文件系统(磁盘或磁盘分区)因为inode号相同
互为硬链接,没有源文件和目标文件,创建个数没有限制
如何寻找其他硬链接:
find / -type f -inum inode号
硬链接用的少,不如备份,经常修改的文件可以用硬链接。
示例1:
[root@VMware-koten ~]#touch 1.txt
[root@VMware-koten ~]#ll
total 0
-rw-r--r-- 1 root root 0 Mar 7 08:47 1.txt
[root@VMware-koten ~]#ln 1.txt hard_link.txt
[root@VMware-koten ~]#ll
total 0
-rw-r--r-- 2 root root 0 Mar 7 08:47 1.txt
-rw-r--r-- 2 root root 0 Mar 7 08:47 hard_link.txt
[root@VMware-koten ~]#echo test > 1.txt
[root@VMware-koten ~]#cat 1.txt
test
[root@VMware-koten ~]#cat hard_link.txt
test
[root@VMware-koten ~]#ll -i
total 8
33587013 -rw-r--r-- 2 root root 5 Mar 7 08:48 1.txt
33587013 -rw-r--r-- 2 root root 5 Mar 7 08:48 hard_link.txt
[root@VMware-koten ~]#
软链接
特点:1、inode号不同
2、类似Windows的快捷方式,存储着指向源文件的路径
3、目录和文件都可以做软连接
4、创建软连接 ln -s 源文件 链接文件
链接文件权限是满的,但是具体权限得看源文件
5、删除软链接文件,不影响源文件。
删除源文件,链接文件失效,ll再查询,源文件会变成红底白字闪烁,再创键会重新链接上
6、软连接可以跨文件系统(磁盘或磁盘分区)
7、创建使用绝对路径,不然容易丢,即使是在当前。
一定要用绝对路径,不然会链接到连接文件同目录下的原文件
除非你是在同一目录下。
比如:ln -s /etc/hosts /opt/hosts
企业最常用软连接:
作用:
1、解决磁盘不够用的问题
mkdir /data
mount /dev/sdb/data
mv /var/log/network.log /data/network.log
ln -s /data/network.log /var/log/network.log
2、解决代码发布回滚的问题
第五列:文件的属主
文件的主人,文件的拥有者
不说了,没啥可说的
第六列:文件的属组
不说了,没啥可说的
第七列:文件的大小
使用ll -h可以查看
du -h 统计目录及目录下所有文件的大小
指定查看所有文件的大小
ll -h和du -h
查文件的话,查到的大小一致
查目录的话,ll -h只是查目录本身的文件,du -h是查目录及目录下面的所有文件
[root@VMware-koten ~]#du -h /etc
第八列:文件时间
linux的三种时间
文件访问时间
文件修改时间
文件属性的变化时间或修改时间
.[root@VMware-koten ~]#stat 1.txt
File: ‘1.txt’
Size: 5 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 33587013 Links: 2
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2023-03-07 10:22:57.669743196 +0800 文件访问时间 cat 内容变化看,不会发生变化,修改后才会发生变化
Modify: 2023-03-07 10:22:57.669743196 +0800 文件修改时间 vim echo 常用!
Change: 2023-03-07 10:22:57.669743196 +0800 文件属性的变化时间或修改时间 vim echo chomd +x
Birth: -
[root@VMware-koten ~]#
第九列:文件名称
文件名存在上级目录的clock中
文件名称和inode号层次一样
我是koten,10年运维经验,持续分享运维干货,感谢大家的阅读和关注!