话不多说,直接开始!
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年运维经验,持续分享运维干货,感谢大家的阅读和关注!