Linux文件属性及类型


  1. [root@localhost ~]# ll anaconda-ks.cfg
  2. 文件类型 权限 硬连接数 文件的大小 文件的创建,修改时间
  3. - rw-------. 1 root root 1379 3 12 17:43 anaconda-ks.cfg
  4. [root@localhost ~]# ll -d zls
  5. 文件类型 权限 硬连接数 所属用户 所属用户组 文件的大小 文件的创建修改时间
  6. d rwxr-xr-x. 2 root root 6 3 12 18:00
  7. 文件名
  8. zls
  9. -:普通文件
  10. d:目录文件
  11. rw- --- --- :权限
  12. rwx r-x r-x :权限
  13. r:读 read
  14. w:写 write
  15. x:执行权限 execute

Linux系统文件的类型


  1. ll 查看
  2. file # 查看文件类型
  3. - 普通文件
  4. d directory 目录文件
  5. c char 字符设备文件
  6. b block 块设备文件(用来存储数据的设备)
  7. s socket,安全套接字文件
  8. l link 软链接文件(快捷方式)
  9. p pipe 管道文件
  10. 注意:通过颜色或者后缀判断文件类型不一定准确.

系统链接文件

一个文件分为两部分:

  • 真实数据 block
  • 元数据 inode

  • block:真实数据占用的空间,默认一个block 4k,使用下面命令查看

    1. df -h
  • inode:元数据占用的空间,形容文件属性。

    1. df -i # 查看inode使用情况
    2. ls -i # 查看文件inode

模拟inode占满场景


  1. [root@oldboy dev]# dd if=/dev/zero of=/opt/disk bs=1K count=1024
  2. 1024+0 records in
  3. 1024+0 records out
  4. 1048576 bytes (1.0 MB) copied, 0.00210524 s, 498 MB/s
  5. [root@oldboy dev]# ll /opt/disk
  6. -rw-r--r-- 1 root root 1048576 Mar 25 22:22 /opt/disk
  7. [root@oldboy dev]# mkfs.ext4 -i 1024 /opt/disk
  8. mke2fs 1.42.9 (28-Dec-2013)
  9. /opt/disk is not a block special device.
  10. Proceed anyway? (y,n) [root@oldboy dev]# mkfs.ext4 -i 1024 /opt/disk
  11. mke2fs 1.42.9 (28-Dec-2013)
  12. /opt/disk is not a block special device.
  13. Proceed anyway? (y,n) y
  14. Filesystem too small for a journal
  15. Discarding device blocks: done
  16. Filesystem label=
  17. OS type: Linux
  18. Block size=1024 (log=0)
  19. Fragment size=1024 (log=0)
  20. Stride=0 blocks, Stripe width=0 blocks
  21. 1024 inodes, 1024 blocks
  22. 51 blocks (4.98%) reserved for the super user
  23. First data block=1
  24. Maximum filesystem blocks=1048576
  25. 1 block group
  26. 8192 blocks per group, 8192 fragments per group
  27. 1024 inodes per group
  28. Allocating group tables: done
  29. Writing inode tables: done
  30. Writing superblocks and filesystem accounting information: done
  31. [root@oldboy dev]# mkdir /data1
  32. [root@oldboy dev]# mount -t ext4 -o loop /opt/disk /data1
  33. [root@oldboy dev]# df -h
  34. Filesystem Size Used Avail Use% Mounted on
  35. /dev/sda3 28G 1.5G 27G 6% /
  36. devtmpfs 476M 0 476M 0% /dev
  37. tmpfs 487M 0 487M 0% /dev/shm
  38. tmpfs 487M 7.6M 479M 2% /run
  39. tmpfs 487M 0 487M 0% /sys/fs/cgroup
  40. /dev/sda1 497M 120M 378M 25% /boot
  41. tmpfs 98M 0 98M 0% /run/user/0
  42. /dev/sr0 4.3G 4.3G 0 100% /mnt
  43. /dev/loop0 891K 21K 799K 3% /data1
  44. [root@oldboy dev]# df -i
  45. Filesystem Inodes IUsed IFree IUse% Mounted on
  46. /dev/sda3 14423552 31519 14392033 1% /
  47. devtmpfs 121779 379 121400 1% /dev
  48. tmpfs 124487 1 124486 1% /dev/shm
  49. tmpfs 124487 704 123783 1% /run
  50. tmpfs 124487 16 124471 1% /sys/fs/cgroup
  51. /dev/sda1 256000 326 255674 1% /boot
  52. tmpfs 124487 1 124486 1% /run/user/0
  53. /dev/sr0 0 0 0 - /mnt
  54. /dev/loop0 1024 11 1013 2% /data1
  55. [root@oldboy dev]# cd /data1/
  56. # 尝试创建1024个文件到1014的时候就创建不了了。
  57. [root@oldboy data1]# touch file{1..1024}
  58. touch: cannot touch file1014’: No space left on device
  59. touch: cannot touch file1015’: No space left on device
  60. touch: cannot touch file1016’: No space left on device
  61. touch: cannot touch file1017’: No space left on device
  62. touch: cannot touch file1018’: No space left on device
  63. touch: cannot touch file1019’: No space left on device
  64. touch: cannot touch file1020’: No space left on device
  65. touch: cannot touch file1021’: No space left on device
  66. touch: cannot touch file1022’: No space left on device
  67. touch: cannot touch file1023’: No space left on device
  68. touch: cannot touch file1024’: No space left on device
  69. # 磁盘空间未满
  70. [root@oldboy data1]# df -h
  71. Filesystem Size Used Avail Use% Mounted on
  72. /dev/sda3 28G 1.5G 27G 6% /
  73. devtmpfs 476M 0 476M 0% /dev
  74. tmpfs 487M 0 487M 0% /dev/shm
  75. tmpfs 487M 7.6M 479M 2% /run
  76. tmpfs 487M 0 487M 0% /sys/fs/cgroup
  77. /dev/sda1 497M 120M 378M 25% /boot
  78. tmpfs 98M 0 98M 0% /run/user/0
  79. /dev/sr0 4.3G 4.3G 0 100% /mnt
  80. /dev/loop0 891K 46K 774K 6% /data1
  81. # inode已经是%100
  82. [root@oldboy data1]# df -i
  83. Filesystem Inodes IUsed IFree IUse% Mounted on
  84. /dev/sda3 14423552 31519 14392033 1% /
  85. devtmpfs 121779 379 121400 1% /dev
  86. tmpfs 124487 1 124486 1% /dev/shm
  87. tmpfs 124487 704 123783 1% /run
  88. tmpfs 124487 16 124471 1% /sys/fs/cgroup
  89. /dev/sda1 256000 326 255674 1% /boot
  90. tmpfs 124487 1 124486 1% /run/user/0
  91. /dev/sr0 0 0 0 - /mnt
  92. /dev/loop0 1024 1024 0 100% /data1
  93. [root@oldboy data1]#

软链接


创建方式:

  1. ln -s 文件或目录 链接名

软链接相当于windows的快捷方式,软链接文件会将inode指向源文件的block

1.那么当我们对一个文件创建多个软链接时,其实就是多个inode指向同一个block

  1. [root@oldboy opt]# ln -s /opt/a.txt a1_softl
  2. [root@oldboy opt]# ln -s /opt/a.txt a2_softl
  3. [root@oldboy opt]# ln -s /opt/a.txt a3_softl
  4. [root@oldboy opt]# ll a*_so*
  5. lrwxrwxrwx 1 root root 10 Mar 25 22:32 a1_softl -> /opt/a.txt
  6. lrwxrwxrwx 1 root root 10 Mar 25 22:32 a2_softl -> /opt/a.txt
  7. lrwxrwxrwx 1 root root 10 Mar 25 22:32 a3_softl -> /opt/a.txt
  8. [root@oldboy opt]# ll -i a1_softl a2_softl a3_softl a.txt
  9. 16782001 lrwxrwxrwx 1 root root 10 Mar 25 22:32 a1_softl -> /opt/a.txt
  10. 16782002 lrwxrwxrwx 1 root root 10 Mar 25 22:32 a2_softl -> /opt/a.txt
  11. 16782003 lrwxrwxrwx 1 root root 10 Mar 25 22:32 a3_softl -> /opt/a.txt
  12. 17174724 -rw-r--r-- 1 root root 13 Mar 23 16:51 a.txt
  13. [root@oldboy opt]# cat a1_softl
  14. aaabbbccc
  15. [root@oldboy opt]# cat a2_softl
  16. aaabbbccc
  17. [root@oldboy opt]# cat a3_softl
  18. aaabbbccc
  19. [root@oldboy opt]#

2.那么当我们删除软链接文件时,其实只是删除了一个inode的指向,并不会对源文件造成影响。

  1. [root@oldboy opt]# rm a1_softl
  2. rm: remove symbolic link a1_softl’? y
  3. [root@oldboy opt]# rm a2_softl
  4. rm: remove symbolic link a2_softl’? y
  5. [root@oldboy opt]# cat a.txt
  6. aaabbbccc
  7. [root@oldboy opt]#

3.如果我们删除的是源文件,那么该文件的所有软链接文件都会失效。

  1. [root@oldboy opt]# ll
  2. total 264
  3. lrwxrwxrwx 1 root root 10 Mar 25 22:32 a3_softl -> /opt/a.txt
  4. [root@oldboy opt]# rm -rf a.txt
  5. [root@oldboy opt]# ll a3*
  6. lrwxrwxrwx 1 root root 10 Mar 25 22:32 a3_softl -> /opt/a.txt # 变红

软链接的应用场景


1)软件升级

2)代码发布

3)不方便移动的目录

4)数据回滚

5)程序读取

硬链接


1)硬连接文件和元数据文件inode号相同并指向统一block

  1. [root@oldboy opt]# touch a.txt
  2. [root@oldboy opt]# ln a.txt a_hardl
  3. [root@oldboy opt]# ll -i
  4. total 0
  5. 16782001 -rw-r--r-- 2 root root 0 Mar 25 22:47 a_hardl
  6. 16782001 -rw-r--r-- 2 root root 0 Mar 25 22:47 a.txt

2)删除源文件对硬连接没有影响,硬连接有备份的作用

  1. [root@oldboy opt]# echo 123tt >a_hardl
  2. [root@oldboy opt]# ll
  3. total 8
  4. -rw-r--r-- 2 root root 6 Mar 25 22:49 a_hardl
  5. -rw-r--r-- 2 root root 6 Mar 25 22:49 a.txt
  6. [root@oldboy opt]# cat a_hardl
  7. 123tt
  8. [root@oldboy opt]# cat a.txt
  9. 123tt
  10. [root@oldboy opt]# echo bbb >> a.txt
  11. [root@oldboy opt]# cat a.txt
  12. 123tt
  13. bbb
  14. [root@oldboy opt]# cat a_hardl
  15. 123tt
  16. bbb
  17. [root@oldboy opt]# rm -fr a.txt
  18. [root@oldboy opt]# cat a_hardl
  19. 123tt
  20. bbb

3)目录无法创建硬链接

  1. [root@oldboy opt]# ln /opt/ /aaa
  2. ln: ‘/opt/’: hard link not allowed for directory

硬链接和软链接的区别


  1. # 1. 创建命令不同
  2. 硬链接: ln
  3. 软链接: ln -s
  4. # 2. 目录无法创建硬链接,可以创建软链接,硬链接不能跨系统的分区,软链接可以
  5. [root@oldboy ~]# ln /opt/a_hardl /boot/
  6. ln: failed to create hard link ‘/boot/a_hardl => ‘/opt/a_hardl’: Invalid cross-device link
  7. # 3. 硬链接文件与源文件的inode号相同,软链接不同
  8. # 4. 软链接如果删除源文件,所有软链接文件失效,硬链接如果删除源文件,其他硬链接文件均可以使用

Linux ll查看文件属性详解-软硬链接详解的更多相关文章

  1. Linux 软硬链接详解

    软链接 软链接: 类似于windows的快捷方式,—>文本文件,但是包含了真实文件的地址               源文件删除,则软连接也删除               软链接可以放在任何文 ...

  2. Linux实时查看日志的四种命令详解

    转至:https://blog.csdn.net/qq_33223299/article/details/93773989 如何在Linux中实时查看日志文件的内容?那么有很多实用程序可以帮助用户在文 ...

  3. Linux下查看文件属性

    1.ls ls -a 查看所有文件,就是包含隐藏文件 ls -l 查看详细的属性,包括文件类型(d表示目录,-表示普通文件,l表示链接文件),文件的权限(所有者权限,所属组权限,其他人权限),所有者, ...

  4. Linux文件系统属性和权限概念详解(包含inode、block、文件权限、文件软硬链接等)

    Linux中的文件属性 ls -lih 包括:索引节点(inode),文件类型,权限属性,硬链接数,所归属的用户和用户组,文件大小,最近修改时间,文件名等等 索引节点:相当于身份证号,系统唯一,系统读 ...

  5. Linux 链接详解----静态链接实例分析

    由Linux链接详解(1)中我们简单的分析了静态库的引用解析和重定位的内容, 下面我们结合实例来看一下静态链接重定位过程. /* * a.c */ ; void add(int c); int mai ...

  6. linux 软/硬链接详解

    SYNOPSIS ln [OPTION]... [-T] TARGET LINK_NAME (1st form) ln [OPTION]... TARGET (2nd form) ln [OPTION ...

  7. linux文件属性软硬链接知识

    链接的概念 在linux系统中,链接可分为两种:一种为硬链接,另一种为软链接或符号链接.在默认不带参数的情况下,执行ln命令创建的链接是硬链接. 如果使用ln  -s创建链接则为软链接,前面文件类型为 ...

  8. linux ln链接详解

    1.序 Linux具有为一个文件起多个名字的功能,称为链接.被链接的文件可以存放在相同的目录下,但是必须有不同的文件名,而不用在硬盘上为同样的数据重复备份.另外,被链接的文件也可以有相同的文件名,但是 ...

  9. Linux中的软硬链接

    说到Linux中的软硬链接,就必须谈一下Linux的文件系统的组成的重要部分iNode和block. 首先是iNode,先用一张图了解一下iNode在Linux文件系统中的地位: Linux中的文件的 ...

随机推荐

  1. OOUnit1Summary

    一.前三次作业内容分析 前言 第一单元的作业以表达式求导为主题,分三次要求逐步增加,难度逐步提高.这三次作业下来,本人既有收获,也有遗憾,因此通过接下来的内容对我这三次作业进行分析和总结,希望能能为我 ...

  2. Spring Boot demo系列(十):Redis缓存

    1 概述 本文演示了如何在Spring Boot中将Redis作为缓存使用,具体的内容包括: 环境搭建 项目搭建 测试 2 环境 Redis MySQL MyBatis Plus 3 Redis安装 ...

  3. OkHttp配置HTTPS访问+服务器部署

    1 概述 OkHttp配置HTTPS访问,核心为以下三个部分: sslSocketFactory() HostnameVerifier X509TrustManager 第一个是ssl套接字工厂,第二 ...

  4. JMeter发送get请求并分析返回结果

    在实际工作的过程中,我们通常需要模拟接口,来进行接口测试,我们可以通过JMeter.postman等多种工具来进行接口测试,但是工具的如何使用对于我们来说并不是最重要的部分,最重要的是设计接口测试用例 ...

  5. CS与MSF之间的会话传递

    0x01 MSF会话传递到CS 1. CS上的操作 点击Cobalt Strike然后选择监听器,创建一个HTTPS Beacon的监听器即可 创建成功后如下 2. MSF上的操作 前提是已经获取到了 ...

  6. Kafka原理分析之基础篇

    原创文章,转载请标注.https://www.cnblogs.com/boycelee/p/14728638.html 一.Kafka二.解决问题异步处理应用解耦流量削峰三.特性读写效率网络传输并发能 ...

  7. 09- Linux下压缩和解压命令

    压缩和解压命令 gzip命令: 作用: tar命令 作用:对文件或文件夹进行打包和解包的操作. 格式:tar [选项] 文件名 [文件名或路径] 练习题:

  8. hdu2722 简单最短路,处理好输入就行

    题意:       从左上角走到右下角,有的最短时间,每段路径的长度都是2520,每段上都有自己的限制速度,方向. 思路:      直接写就行了,就是个最短路,权值是2520/限制,输入的时候细心点 ...

  9. POJ1087DFS+匈牙利或者DINIC

    题意:      有n个插孔,m个电器,q种转换器(转换器可以无限用),然后问你最多有多少个电器能充电. 思路:       比较简单,就是在建图的时候要考虑下,我用了两种方法做的,一个是最大流,这个 ...

  10. nodejs-Stream(流)

    Node.js Stream(流) 描述++++++++++++++++++++++++++++++++++++++++++++++++++++ Stream 是一个抽象接口,Node 中有很多对象实 ...