ZBHBK

文件相关的属性与命令

一、文件的属性

文件大小、时间、类型、权限、属主

1列  2列    3列 4列 5列 6列 7列 8列 9列 10列
(1)inode索引节点编号:文件的唯一标识
(2)文件类型及权限。该列一共11个字符,其中第一个字符为文件类型,随后9个字符为文件对应的权限,最后一个字符“.”和selinux有关的一个标识
(3)硬连接数
(4)属主,文件的拥有者,用户
(5)属组,文件属于的组,用户组
(6)文件的大小
(7)月
(8)日
(9)时间
(10)文件名

二、文件类型

   1、“-”代表普通文件
         普通文件又分:a、纯文本文件:字符、数字等内容   
                     b、数据文件:存放命令收集的信息   
                     c、二进制文件:可执行的命令
    2、“d”代表目录
    3、“l”代表符号链接(软链接)文件。本质是一个快捷方式 
           创建软链接的方法:ln -s 源文件 软连接;(如:ln -s a.txt a_softlink)
           删除软链接:rm
    4、字符(character)/块(block)设备文件
          以“c”开头的是字符设备,以“b”开头的是块设备(硬盘、光驱)
    5、以“s”开头的,套接口(socket)文件

三、与文件相关的命令

    1、file 文件:查看文件类型
    2、which:查命令的全路径
         注意:变量:$PATH
                  问题:为什么我们不管在什么路径下面输入命令都可以找到呢?用which命令一找,发现命令的路径在其他路径下面,就是因为$PTATH变量        
                             当我们输入命令的时候,系统就会自动到$PATH变量的路径下面去找这个命令
                             $PATH的路径:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin          
    3、whereis:显示命令、源码、及其相关文件全路径
               whereis命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件
          参数:-b:查二级制命令
          例如:whereis -b cp
    4、locate:快速定位文件路径
               该命令查找文件路径,是从数据库(/var/lib/mlocate/mlocate.db)里面来查找,使用之前需要用命令updatedb更新该数据库
         例如:locate cp
    5、find:查找目录下的文件
          查找原理:磁盘遍历,速度慢
          格式:find 查找路径 查找条件 处理动作
                      find 哪个路径 -name 文件全名;(find ~ -name "a.txt":从当前用户的家目录开始查找)
                      名字的模糊查找:find / -name "*txt"
             (1)-name,按文件名称查找:find ~ -name "a.txt";(注意:-iname:是区分文件名的大小写)
             (2)-type,按文件名称和类型查找:find / -type f -name "a.txt"
             (3)-o,按文件名称或者文件类型查找:find / -type f -o -name "a.txt"
             (4)-mtime,按修改时间查找:find / -type f -mtime +3 -name "a.txt";+3:天之前,-3:最近3天,3:3天
             (5)-size:按文件大小来查找:-size "3k"
             (6)-exec,对查找的结果在处理:find / -type f -name "a.txt" -exec ls -l {} \; 
     6、xargs:分组或者从标准输入执行命令,以空格来分组的(只能从标准输入那里取数据)
                     默认是对空格来分组,如果没有空格也需要分组可以用参数-d
              格式:xargs -n 3<a.txt
              参数:-n:几个东西一个组
                        -d:指定分隔符,不指定默认是空格。如:xargs -d "." -n 2 <a.txt
                        -i:把前面查找的结果放到大括号里面
              例子:find / -type f -name "a.txt"|xargs -i{} cp {} /opt;把前面找到的文件批量复制到/opt目录下 
                         find / -type f -name "a.txt" -exec cp {} /opt;
      7、打包压缩命令
            (1)tar
                         格式:tar -zcvf  包名  文件;(参数:zcvf压缩)
                                    z:打包,c:创建,v:输出打包过程,f:文件
                                    查看打包过程:tar -tf 包名
      8、解压命令
            (1)tar
                          参数:-h:打包软链接文件指向真实源文件。即就是打包软链接文件时把对应的源文件也一块打包
                          格式:tar -zxvf 包名;解压到当前目录下
                                     tar -zxvf 包名 -C 指定目录;解压到指定的目录下
      9、stat 查看文件属性:stat a.txt
              参数:-c:获取文件属性的一部分。如果:stat -c %A a.txt;读取文件权限
      10、df 查看文件系统
              参数:-i 查看inode信息
                   -h 以人类可读的形式查看block信息

四、文件属性​

   1、用户
                    Linux是多用户多任务的操作系统
                    Linux里面所有的文件和进程都要有用户对应
          (1)用户的分类:
                   a、超级管理员root。它的UID为0,换句话说UID为0的都有超级管理员的权限
                         命令:id 用户;查询用户的信息
                         whoami;查看当前用户是谁
                   b、虚拟用户:实际存在的用户,但是又不允许登陆。(UID的范围是1-499)
                         作用:能够满足文件或进程运行属主的要求,但是又不会带来管理的风险
                   c、普通用户:实际存在,又允许登陆。由管理创建,管理系统的
                         权限仅限于家目录,在一些系统级目录里可以读不可写,不能进入/root目录
          (2)和用户有关的命令
                   1)id 用户;查询用户信息
                   2)whoami;查询当前用户是谁
                   3)创建用户:useradd 用户名;

   2、用户组
            Linux里面每一个用户都必须有一个用户组
            默认情况下创建用户,它会自动创建一个和用户名相同的用户组以及相同的GID
         (1)用户和用户组的对应关系
                       用户和用户组之间对应关系可以是1对1 ,1对多,多对1,多对多
         (2)和用户组有关的命令
                      1)创建用户组:groupadd 组名;            
     
   3、文件权限             
          例子:rwx              r-x                r-x (9个字符组成的字符串,3个一组)
               用户权限        用户组权限           其他权限(其他用户和其他用户组)
                 r:read 可读取(可用4代表)
                 w:write 可写(可用2代表)
                 x:execute 可执行(可用1代表)
                 -:没有权限(可用0代表)
    4、文件时间
         分类:a、修改时间:modify(文件内容被修改的时间)
               b、访问时间:access(文件被读取过的时间)
               c、变化时间:change(文件属性发生变化的时间)
          ls 查看的时间是文件的修改时间,如果要查看文件的这三种时间可以用:stat a.txt
          命令:查看文件属性 stat a.txt
          参数:-c:获取文件属性的一部分。如果:stat -c %A a.txt;读取文件权限

    5、文件的索引节点(Index Node)
              索引节点是文件在系统中的唯一标识,我们找文件都是通过文件索引节点来找到的。
              索引节点是硬盘上的一块存储空间,大小为:256B或512B
              索引节点存放的是数据是文件的属性(大小、时间、用户、用户组、权限等)都在索引节点里面,但唯独不包括文件名。文件名在上级目录的block里
              索引节点怎么来的?一个硬盘要想使用必须先分区,然后格式化(创建文件系统),格式化创建文件系统的时候就会生成inode和block
              inode作用是用来存储文件的属性信息,同时存放指向文件实体(block)的指针(类似软链接)。block作用是用来存放文件内容的
              读取文件的过程:先看到的是文件名(上一级目录的block中)——>inode(存放文件属性和指向文件实体的指针)——>block(存放文件实体内容)
              例如:cat /etc/a.txt :先找"/"—>然后找根目录的inode—>然后找根目录的block(etc文件名存放于此)—>etc的inode—>etc的block(a.txt存放于此)—>a.txt的inode—>a.txt的block
        (1)inode的特点:        
              1)ext3/ext4文件系统(CentOS5和6默认的文件系统)下,一个非空文件至少要占用一个inode(有且只有一个)和一个block(可以有多个)
              2)inode节点号相同的文件,互为硬链接文件。可以认为是一个文件的不同入口
              3)inode在某一个文件系统(分区)中是唯一的
        (2)block(磁盘块)特点          
              1)磁盘读取数据是按block为单位读取的
              2)每读取一个block就会消耗一次磁盘I/O
              3)若文件比较大,一个文件可能占用多个block
              4)若文件比较小,一个block剩余空间会被浪费,无论内容有多小
     6、第二列文件权限后面的点“.”是标识selinux的符号
             selinux是安全规则,目的是让linux系统更加安全。该规则太严格一般企业都是关闭的,要达到安全目的可以用防火墙等其他手段
             命令:getenforce:查看
                  setenforce 1/0:临时关闭
                  永久关闭:在配置文件:/etc/selinux/config中修改SELENIUX的值
             防火墙的知识:linux里面防火墙C6:iptables,C7:firewalld
                     C7:
                            查看防火墙的状态:systemctl status firewalld.service
                            启动防火墙: systemctl start firewalld.service
                            防火墙开机自启动:systemctl enable firewalld.service
                            不是开机自启动:systemctl disable firewalld.service
                      C6:
                             查看防火墙状态:service iptables status
                             启动防火墙:service iptables start/restart;或者 /etc/init.d/iptables start
                             关闭防火墙:service iptables stop;
                             开机自启动防火墙:chkconfig iptables on
                             开机不自启动防火墙:chkconfig iptables off
      7、硬链接
         (1)什么是硬链接?
                            具有相同inode节点号的文件互为硬链接。
                           其实我们可以这样理解一个文件在系统中的存储分为3个部分:文件名、inode、文件内容。如何找到一个文件先找到文件名
                           然后根据文件名找到文件的索引节点,其中inode中存储了文件的属性信息,然后根据inode中的信息找到存储在block中的
                           文件内容。所以硬链接就是指向同一个文件的inode的不同的文件名
                注意:在linux系统中不支持人工创建目录的硬链接
         (2)新建硬链接
                            格式:ln  要硬链接的文件 硬链接名;
                            例子: ln  ./a.txt  /home/a_hard_link ;
         (3)硬链接的作用:1)备份数据
         (4)静态文件删除原理:
                  1)静态文件:没有进程或程序正在访问的文件
                  2)删除原理:该文件的所有的硬链接数为0,即所有的硬链接都被删除,包括自身。即文件就被删除

      动态文件:有进程或程序访问的文件
          删除条件:1)硬链接数为0
                   2)所有进程调用都要停止或者取消

      8、软链接
              本质是一个快捷方式,指向源文件实体,本身和源文件是不同的文件。
              其实可以理解为:软链接,就是创建一个快捷方式,指向上面的文件名,然后通过文件名找文件的inode然后找文件内容,
                                       所以删除源文件的文件名软链接也无法访问该文件。软链接也是一个没有内容block的文件
           1)创建软连接
                                  ln -s a.txt a_soft_link;
                 特点:a、删除源文件,那么软链接也无法访问改文件
                            b、目录也可以创建软链接
                            c、想从一个目录去访问另一个目录的时候可以用软链接

posted on 2020-11-18 16:09  ZBHBK  阅读(322)  评论(0编辑  收藏  举报

导航