iptables-linux(ls)-inode

JasonXu徐晓峰      2022-02-17     126

关键词:

Part1:iptables

   环境:centos6.7

   

Part2:linux ls命令

   当输出的内容超出一屏时,可以使用管道(|)结合more命令来实现分屏显示

1 ls | more

按enter键 是向上滚动一行

按空格键 是向上滚动一页

  ls

  命令选项 (非必选项)

  -a 列出目录下所有文件,包含以.开头的隐藏文件

  -A显示出.和..以外的所有文件

  -d显示目录的自身属性,不显示目录下的文件(不是很清楚,只显示一个.)

  -l列出目录和文件的详细信息

  -h 和 -l参数合用,以人可读取的方式显示文件的大小,如4k,2M,3G,

  -i 显示文件或者目录的inode信息,即索引信息

  -t 按修改时间排序显示文件或者目录(时间由近及远排序)

  -r 与其他参数一起使用,使之反向排序

  --color=auto 让输出的内容按照类别显示颜色(grep中也有该参数)

part3:Linux索引节点inode

  1.inode的简介

    文件存储在硬盘上,硬盘的最小存储单位叫做"扇区"(sector).每个扇区存储512字节(相当于0.5kb)。

    操作系统读取硬盘的时候不会一个一个扇区的读取,这样效率太低,而是一次性读取多个扇区,即一次性读取一个“块”(block)。这种由多个扇区组成的“块”,是文件存

  储的最小单位。“块”的大小,最常见的是“4KB”,即连续的八个扇区(sector)组成一个block。

    文件数据都存储在“块”中,那么显然,我们必须找到一个地方存储文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种存储文件元信息的区域就

  叫做inode,中文译名“索引节点”。

  2.inode的内容

  inode包含文件的元信息,具体来说有以下内容:

  *文件的字节数

  *文件拥有者的User ID

  *文件的Group ID

  *文件的读写执行权限

  *文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。

  *链接数,即有多少文件名指向这个inode

  *文件数据block的位置

  可以用stat命令,查看某个文件的inode的信息:

   [[email protected]**** /]# stat bin 

  总之,除了文件名以外的所有文件信息,都存放在inode之中。

  3.inode的大小

    inode也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域,一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所

  包含的信息。

    每个inode节点的大小,一般是128字节或256字节。inode节点的总数,在格式化时就给定,一般是每1KB或2KB就设置一个inode。

    查看每个硬盘分区的inode的总数和已经使用的数量,可以使用df命令。  

1 [root@izr**** ~]# df -i
2 Filesystem      Inodes IUsed   IFree IUse% Mounted on
3 /dev/xvda1     2621440 37659 2583781    2% /
4 tmpfs           240056     1  240055    1% /dev/shm

    查看每个inode节点的大小,可以用一下的命令

1 [root@izr**** ~]# dumpe2fs -h /dev/xvda1 | grep "Inode size"
2 dumpe2fs 1.41.12 (17-May-2010)
3 Inode size:               256

    由于每个文件都必须有一个inode,因此有可能发生inode已经用光,但是硬盘还没存满的情况。这时,就无法在硬盘上存放新文件。

  4.inode号码

    没有inode都有一个号码,操作系统用inode号码来识别不同的文件。

    这里值得重复一遍,Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称或者绰号。

    表面上,用户通过文件名,打开文件。实际上,系统内部这个过程分成三部:首先,系统找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;

  最后,根据inode信息,找到文件数据所在的block,读出数据。

    使用ls -i 命令,可以看到文件名对应的inode号码:

1 [root@iZr**** /]# ls -i
2 1835009 bin    786433 home        1048577 media   131073 root           1 sys
3 1966081 boot   393217 lib          655361 mnt    1441793 sbin     2228225 tmp
4       4 dev    262145 lib64        917505 opt     524289 selinux  1310721 usr
5 2490369 etc        11 lost+found        1 proc    131076 srv      2097153 var

   5.目录文件

      Unix/Linux系统中,目录(directory)也是一种文件。打开目录,实际上就是打开目录文件。

      目录文件的结构非常简单,就是一些列目录项(dirent)的列表。每个目录项,由两部分组成:所包含文件的文件名,以及该文件名对应的inode号码。

      ls命令只列出目录文件中的所有文件名:

1 [root@iZr**** ~]# ls /
2 bin   dev  home  lib64       media  opt   root  selinux  sys  usr
3 boot  etc  lib   lost+found  mnt    proc  sbin  srv      tmp  var

      ls -i命令列出整个目录文件,即文件名和inode号码:

      

1 [root@iZr**** ~]# ls -i /
2 1835009 bin    786433 home        1048577 media   131073 root           1 sys
3 1966081 boot   393217 lib          655361 mnt    1441793 sbin     2228225 tmp
4       4 dev    262145 lib64        917505 opt     524289 selinux  1310721 usr
5 2490369 etc        11 lost+found        1 proc    131076 srv      2097153 var

      如果要查看文件的详细信息,就必须根据inode号码,访问inode节点,读取信息。ls -l命令列出文件的详细信息。

      

 1 [root@iZr**** ~]# ls -l /
 2 total 96
 3 dr-xr-xr-x.  2 root root  4096 Jun 25 07:20 bin
 4 dr-xr-xr-x.  4 root root  4096 Jun 25 07:16 boot
 5 drwxr-xr-x  16 root root  3380 Oct 14 18:05 dev
 6 drwxr-xr-x. 69 root root  4096 Oct 14 18:05 etc
 7 drwxr-xr-x.  2 root root  4096 Sep 23  2011 home
 8 dr-xr-xr-x.  9 root root  4096 Jun 25 07:20 lib
 9 dr-xr-xr-x.  9 root root 12288 Jun 25 07:20 lib64
10 drwx------.  2 root root 16384 Jun 25 07:13 lost+found
11 drwxr-xr-x.  2 root root  4096 Sep 23  2011 media
12 drwxr-xr-x.  2 root root  4096 Sep 23  2011 mnt
13 drwxr-xr-x.  2 root root  4096 Sep 23  2011 opt
14 dr-xr-xr-x  93 root root     0 Oct 15  2017 proc
15 dr-xr-x---.  4 root root  4096 Jul 18 11:00 root
16 dr-xr-xr-x.  2 root root 12288 Jun 25 07:21 sbin
17 drwxr-xr-x.  2 root root  4096 Jun 25 07:13 selinux
18 drwxr-xr-x.  2 root root  4096 Sep 23  2011 srv
19 drwxr-xr-x  13 root root     0 Oct 15  2017 sys
20 drwxrwxrwt.  3 root root  4096 Oct 14 18:05 tmp
21 drwxr-xr-x. 13 root root  4096 Jun 25 07:13 usr
22 drwxr-xr-x. 18 root root  4096 Jun 25 07:19 var

    6.硬链接

      一般情况下,文件名和inode号码是“一一对应”关系,每个inode号码对应一个文件名。但是,Unix/Linux系统,允许多个文件名指向同一个inode号码。这意味着,可以

    用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名;但是,删除一个文件名,不影响另一个文件名的访问。这种情况就被称为“硬链接”(hard

     link)

      ln命名可以创建硬链接 

 1 [root@iZr**** init.d]# ln sshd sshdbak
 2 [root@iZr**** init.d]# ls
 3 aegis             cloud-init-upgrade  iscsi         network      saslauthd
 4 agentwatch        crond               iscsid        nscd         single
 5 atd               ecs_mq-service      killall       ntpd         sshd
 6 auditd            eni-service         lvm2-lvmetad  ntpdate      sshdbak
 7 blk-availability  functions           lvm2-monitor  postfix      sysstat
 8 cloud-config      halt                mdmonitor     rdisc        udev-post
 9 cloud-final       ip6tables           multipathd    restorecond  xinetd
10 cloud-init        iptables            netconsole    rsyslog
11 cloud-init-local  irqbalance          netfs         sandbox

      注意:文件夹不能创建硬链接(hard link)

      运行上面这条命令后,源文件与目标文件的inode号码相同,都指向同一个inode。inode信息中有一项叫做“链接数”,记录指向该inode的文件名总数,这是就会增加1。

      反过来,删除一个文件名,就会使得inode节点中的“链接数”减1。当这个值减到0,表明没有文件名指向这个inode,系统就会回收这个inode号码,以及其所对应block

    区域

      目录文件的“链接数”。创建目录时,默认会生成两个目录项:“.”和“..”。前者的inode号码就是当前目录的inode号码,等同于当前目录的“硬链接”;后者的inode号码就是

    当前目录的父目录的inode号码,等同于父目录的“硬链接”。所以,任何一个目录的“硬链接”总数,总是等于2加上它的子目录总数(含隐藏目录),这里的2是本身自己的

    “硬链接”和当前目录下的“.硬链接”。

    7.软链接

      除了硬链接以外,还有一种特殊情况。文件A和文件B的inode号码虽然不一样,但是文件A的内容是文件B的路径。读取文件A时,系统会自动将访问者导向文件的B。因

    此,无论打开哪一个文件,最终读取的都是文件B。这是文件A就称为文件B的“软链接”(soft link)或者符号链接(symblic link)。

      这就意味着,文件A依赖于文件B而存在,如果删除了文件B,打开文件A就会报错:“No such file or directory”。这是软链接与硬链接最大的不同:文件A指向文件B的文

    件名,而不是文件B的inode号码,文件B的inode“链接数”不会因此发生改变。

    ln -s 命令可以创建软链接

 1 [root@iZr**** ~]# ln /etc/init.d/sshd sshdbak
 2 [root@iZr**** ~]# ls
 3 Finished  Package  Running  sshdbak
 4 [root@iZr**** ~]# stat sshdbak
 5   File: `sshdbak
 6   Size: 4621            Blocks: 16         IO Block: 4096   regular file
 7 Device: ca01h/51713d    Inode: 2490875     Links: 2
 8 Access: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
 9 Access: 2017-10-14 10:32:25.014202525 +0800
10 Modify: 2017-03-22 16:33:18.000000000 +0800
11 Change: 2017-10-14 23:09:46.819151064 +0800
12 [[email protected]**** ~]# stat /etc/init.
13 init.conf  init.d/
14 [[email protected]**** ~]# stat /etc/init.d/sshd
15   File: `/etc/init.d/sshd
16   Size: 4621            Blocks: 16         IO Block: 4096   regular file
17 Device: ca01h/51713d    Inode: 2490875     Links: 2
18 Access: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
19 Access: 2017-10-14 10:32:25.014202525 +0800
20 Modify: 2017-03-22 16:33:18.000000000 +0800
21 Change: 2017-10-14 23:09:46.819151064 +0800
22 [root@iZr**** ~]# ln -s /etc/init.d/sshd sshdbakk
23 [root@iZr**** ~]# ls
24 Finished  Package  Running  sshdbak  sshdbakk
25 [root@iZr**** ~]# stat sshdbakk
26   File: `sshdbakk -> `/etc/init.d/sshd
27   Size: 16              Blocks: 0          IO Block: 4096   symbolic link
28 Device: ca01h/51713d    Inode: 131097      Links: 1
29 Access: (0777/lrwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
30 Access: 2017-10-14 23:11:26.788314281 +0800
31 Modify: 2017-10-14 23:11:24.983275362 +0800
32 Change: 2017-10-14 23:11:24.983275362 +0800

    8.inode的特殊作用

      由于inode号码与文件名分离,这种机制导致了一些Unix/Linux系统特有的现象。

      1.有时,文件名包含特殊的字符,无法正常删除。这是直接删除inode节点,就能起到删除文件的作用。

      2.移动文件或者重命名文件,只是改变文件名,不影响inode号码

      3.打开一个文件以后,系统就以inode号码来识别这个文件,不在考虑文件名。因此,通常来说,系统无法从inode号码得知文件名。

      第3点使得软件更新变得简单,可以在不关闭软件的情况下进行更新,不需要重启。因为系统通过inode号码,识别运行中的文件,不通过文件名。更新的时候,新版的

    文件以同样的文件名,生成一个新的inode,不会影响的运行中的文件,等到下一次运行这个软件的时候,文件名就自动指向新版文件,旧版文件的inode则被回收。

    9.实际问题

      在一台配置较低的Linux服务器(内存、硬盘比较小)的/data分区内创建文件时,系统提示磁盘空间不足,用df -h命令查看了一下磁盘使用情况,发现/data分区只使用

    了66%,还有12G的剩余空间,按理说不会出现这种问题。 后来用df -i查看了一下/data分区的索引节点(inode),发现已经用满(IUsed=100%),导致系统无法创建新目录和

    文件。 
         查找原因:
        /data/cache目录中存在数量非常多的小字节缓存文件,占用的Block不多,但是占用了大量的inode。 
       解决方案:
        1.删除/data/cache目录中的部分文件,释放出/data分区的一部分inode。
        2.用软连接将空闲分区/opt中的newcache目录连接到/data/cache,使用/opt分区的inode来缓解/data分区inode不足的问题:

 

1 [root@izp**** /]# ln -s /opt/newcache /data/cache  

就是/data/cache的内容是指向/opt/newcache的路径。






ls命令

...:跟-a选项类似,除了..和.-d:显示目录自身属性-i:indexnode,inode,显示inode节点-r:逆序显示-R:递归(recursive)显示文件类型-:普通文件(f)d:目录文件b:块设备文件(block)c:字符设备文件(character)l:符号链接文件(symbol 查看详情

ls命令和alias命令

...来说,这表示硬链接数,表示有多少个文件使用了相同的inode号,也就代表这个文件可以被删除多少次。inod 查看详情

文件的inode号操作

linux给每个文件生成了一个唯一的inode编号,命令行下操作文件需要输入文件名,如果遇到文件名特别难输入(或者包含特殊符号)的情况,可以用inode号操作文件.可以用这个命令查看inode号:ls-i这样操作:find-inum1185481-execmd5sum{};  查看详情

遇到的问题如何解释与解决

/dev/null垃圾箱,黑洞空间提示不足有可能是INODE号被占满涉及到.与..的文件时ls选项要加上-d选项为什么要用-d因为ls选项会自动列出目录下的文件,每一个目录下都存在(.也就是当前目录)与(..上一级目录)。不加d的话,*.会... 查看详情

文件系统inode与block

ls-lhi:-i:inode索引节点编号,它是文件或目录,在磁盘里的唯一标识,Linux读取文件或者目录首先要读取到这个索引节点。查看根分区inode大小:(inode大点可以存放更多的属性)[[email protected]~]#dumpe2fs/dev/sda3|grep-i"Inodesize"dumpe2... 查看详情

ls命令

ls-a查看全部文件ls-t按照时间排序ls-i查看inode号ls-l查看文件的详细信息[[email protected]~]#ls-l总用量4-rw-------.1rootroot14181月1008:17anaconda-ks.cfgls-h显示文件大小的时候可以自动变换单位[[email protected]~]#ls-lh总用量4.0K-rw-------.1ro 查看详情

目录中的最大 inode 数? [关闭]

】目录中的最大inode数?[关闭]【英文标题】:Maximumnumberofinodesinadirectory?[closed]【发布时间】:2010-09-0714:38:05【问题描述】:单个目录中有最大数量的inode吗?我有一个包含超过200万个文件的目录,并且无法让ls命令针对该目录工... 查看详情

快速 ls 命令

...ry.txt,但这似乎永远挂起。我假设服务器正在进行大量的inode排序。有什么方法可以加快ls命令的速度,以获取文件名的目录列表?我现在不关心大小、日期、权限等。【问题讨论】:【 查看详情

访问 inode 表以列出所有文件名

】访问inode表以列出所有文件名【英文标题】:Accessinodetabletolistallfilenames【发布时间】:2021-07-1601:31:00【问题描述】:我想知道在Posix系统上列出文件名的最有效方法。做任何一个:$ls-R或者:$find/或者:$du/或100种其他变体(***/... 查看详情

★?命令ls★显示目录列表

...内容列表。输出的信息从左到右包括文件权限、使用相同iNode的文件个数、所属者、所属组、文件大小(单位为字节)、最后修改时间、文件名。[[email protected]~]#ls-l总用量8-rw-------.1rootroot140411月1422:43anaconda-ks.cfg-r 查看详情

每天一个命令ls

...为2若该目录下有几个目录就会再增加几个连接数ls-li查看inode信息ls-al查看所有文件信息ls-lR查看目录下目录下的文件(递归显示目录下的文件)ls-lct按ctime排序ls-lrt按修改时间排序ls-lRT按修改时间反序排列文件ls-lS按文件大小排... 查看详情

问:说说inode到底是啥?

参考技术A答:inode(即indexnode,索引节点)是类UnixOS中保存文件系统中的对象元数据的数据结构。全文完,谢谢食用。……开玩笑的,下面稍微深入地谈谈inode,以及与它相关的一些小知识。所谓“文件系统中的对象”,是个非... 查看详情

df-i和df-h

参考技术Adf-h显示磁盘占用是没有问题;但是df-i显示磁盘inode资源占用完。inode译成中文就是索引节点,每个存储设备(例如硬盘)或存储设备的分区被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是Block,Block... 查看详情

linux中的inode到底是啥

参考技术A要了解Linux操作系统上的inode前,我们先来说说Linux操作系统上的文件。对于Linux操作系统而言,[一切皆文件]。而文件是无法独立于存储介质(这里指的是物理磁盘或内存、闪存等)存在的,一切操作系统上的文件都无时... 查看详情

/bin/ls 和 /usr/bin/ls 之间的区别 [关闭]

...800:19:30【问题描述】:似乎/bin/ls和/usr/bin/ls都具有相同的inode(以及相同的sha-256哈希),但ls-li/usr/bin/ls/bin/ls显示的硬链接数是1而不是2:user@debian:~/Docum 查看详情

ls--查看文件或者目录的信息

...LEoptions:-l列出详细的信息-d列出目录的信息-i查看文件的iNode号-a列出所有文件,包括隐藏文件-t以修改时间排序列出所有文件-h文件大小以方便阅读的方式显示选项可根据需要组合使用如:650)this.width=650;"src="http://s3.51cto.com/wyfs02/... 查看详情

软链接vs.硬链接

...,又有什么区别呢,本文来给大家做一个解释。  Inode索引节点 要想理解硬链接和软链接的区别,首先要明白什么是Inode。Inode是Indexnode,索引节点的意思。每个文件都有一个inode,里边保存着文件的元数据(metadata)... 查看详情

读取文件:文件概念简介[奇牛学院](代码片段)

文件概念简介inode-“索引节点”,储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。每个inode都有一个号码,操作系统用inode号码来识别不同的文件。ls-i查看inode号stat函数作用:返回文件的状态信息#inclu... 查看详情