zoukankan      html  css  js  c++  java
  • linux文件属性

    1.linux文件属性概述

    如何查看文件详细信息?

    # 使用 ll -i 查看文件详细信息,以前使用 ll / ls -l 还缺少一位信息 
    [root@oldgirl /test ]# ll -i
    total 0
     34332866 drwxr-xr-x 3 root root 20 Apr 30 15:01 oldboy1
    101717365 drwxr-xr-x 3 root root 20 Apr 30 15:01 oldboy2
        30050 -rw-r--r-- 1 root root  0 Apr 30 15:01 test1.txt
        30051 -rw-r--r-- 1 root root  0 Apr 30 15:01 test2.txt
    

    各列信息文字描述

    第一列       显示文件的inode信息
    
    第二列       显示文件类型
    
    第三列		  显示文件的权限位信息(12位)
    
    第四列  	  显示文件的硬连接数
    
    第五列   	  显示文件属组用户
    
    第六列   	  显示文件所属组的信息
    
    第七列    	  显示文件数据大小
    
    第八列       显示文件的修改时间,修改时间,修改时间
    
    第九列       文件名
    

    2.属性详细-inode

    比如现在有一个文件需要存储在我的电脑上,是直接可以存储在磁盘上的吗?并不是,一块新的磁盘要想存储数据要经过几个步骤才能让我们正常使用,在磁盘可以使用过程中产生了俩个关键的信息:inode和block信息,简单来说inode像是书的目录存放着我们要看内容的页码,而block指向就第几页的内容信息,通过block就能查看书的内容。

    磁盘如何存储数据文件的?

    1. 准备好需要的磁盘
    2. 通过raid把多个磁盘整合
    3. 对磁盘进行了格式化处理
    4. 创建文件系统,产生了inode和block
    5. 磁盘挂载
    

    数据存储.png

    inode信息说明

    inode就是文件的索引节点,存储着磁盘上文件的属性信息,是在文件系统创建完成产生的

    inode特点说明

    1. inode存储的文件的属性信息
    2. inode存储文件对应的block指针信息
    3. 文件创建可以有多个inode和block信息,相同的inode视为硬连接
    

    查看inode信息

    df -i
    
    # 显示说明
    Inodes  # 分区的inode总数量
    IUsed   # 分区当前使用情况
    IFree   # 分区剩余的inode
    

    注意:文件属性信息存储在inode中 , 文件的名称信息存储在上一级目录的block中

    block信息说明

    block相当于书的页码,指向的数据内容信息

    block特点说明

    1. block存储的数据信息
    2. 磁盘读取每一个block会消耗磁盘i/o资源
    3. 创建文件至少占用一个block
    # 原因
    block的默认大小为4k(可以调整)
    比较大的文件会占用多个block  # 浪费i/o资源
    比较小的文件占不满一个block  # 浪费磁盘空间 
    

    查看磁盘block

    [root@oldgirl /old ]# df
    Filesystem                   1K-blocks    Used Available Use% Mounted on
    /dev/mapper/centos_xuan-root  18307072 1810760  16496312  10% /
    devtmpfs                        490212       0    490212   0% /dev
    

    3.属性详细-链接数

    linux的链接方式俩种:硬连接和软链接,硬连接指向数据的inode,软链接指向源文件

    硬软链接文件.png

    硬链接文件说明

    硬链接相当于文件数据查看的另一个大门,通过硬链接文件也可以修改数据内容。在一个分区中相同的inode互为硬链接

    软链接文件说明

    软链接就是源文件的快捷方式,软链接指向是它的链接文件,而不是数据本身。当数据源文件删除后,软链接无法访问数据

    ln命令创建链接文件

    ln 	  源文件  链接文件路径  	#创建硬链接
    ln -s 源文件  链接文件路径   #创建软链接
    
    # 命令演示
    [root@oldgirl /old ]# echo 'oldboy' > test.txt
    [root@oldgirl /old ]# ln test.txt test_hear.ln
    [root@oldgirl /old ]# ln -s test.txt test_sorf.ln
    [root@oldgirl /old ]# ll -i 
    total 8
    30057 -rw-r--r-- 2 root root 7 May  1 15:51 test_hear.ln
    30069 lrwxrwxrwx 1 root root 8 May  1 15:52 test_sorf.ln -> test.txt
    30057 -rw-r--r-- 2 root root 7 May  1 15:51 test.txt
    

    查找系统文件的硬连接

    find 目录 -inum inode号
    
    [root@oldgirl /old ]# ll -i
    total 8
    30057 -rw-r--r-- 2 root root 7 May  1 15:51 test_hear.ln
    30069 lrwxrwxrwx 1 root root 8 May  1 15:52 test_sorf.ln -> test.txt
    30057 -rw-r--r-- 2 root root 7 May  1 15:51 test.txt
    
    [root@oldgirl /old ]# find / -inum 30057
    /old/test_hear.ln
    /old/test.txt
    

    文件硬连接数说明

    当创建一个文件的硬连接数为1,硬连接后文件的硬连接数+1,表示数据的inode信息被俩个文件链接,可以被俩个文件访问数据内容。

    创建软链接不会增加链接数,更加说明软链接不是指向数据的inode。软链接可以创建自己的硬连接文件

    删除文件说明

    我们知道数据存储在磁盘上,当删除文件 rm ,并不是真正删除数据,而断开文件和数据的inode信息的连接

    rm文件删除原理.png

    目录硬连接说明

    目录无法创建链接文件
    原因:目录可以被磁盘挂载,当挂载时会造成冲突 /cd = /cd.ln /cd -> /dev/sda /cd.ln -> /dev/sdb

    目录的硬连接数怎么产生?

    [root@oldgirl /old ]# mkdir oldboy
    [root@oldgirl /old ]# mkdir oldboy/oldgirl{1..3}
    [root@oldgirl /old ]# ll -id oldboy
    34332870 drwxr-xr-x 5 root root 51 May  1 16:40 oldboy
    
    # 原因:
    # 1.在oldboy目录下的隐藏文件 .
    [root@oldgirl /old ]# ll -ia oldboy
    total 0
     34332870 drwxr-xr-x 5 root root  51 May  1 16:40 .  # 和oldboy目录的inode一致 +1
        30056 drwxr-xr-x 3 root root 101 May  1 16:39 ..
     69316579 drwxr-xr-x 2 root root   6 May  1 16:40 oldgirl1
    101717368 drwxr-xr-x 2 root root   6 May  1 16:40 oldgirl2
        30070 drwxr-xr-x 2 root root   6 May  1 16:40 oldgirl3
    
    # 2.在oldboy子目录下的隐藏文件 ..
    [root@oldgirl /old ]# ll -ia oldboy/oldgirl1
    total 0
    69316579 drwxr-xr-x 2 root root  6 May  1 16:40 .
    34332870 drwxr-xr-x 5 root root 51 May  1 16:40 ..   # 和oldboy目录的inode一致 +1
    

    硬软链接文件总结

    1. 链接后软链接文件的类型和权限不一致,硬链接文件和源文件一致
    2. 链接后软链接文件的inode信息不一致,硬链接文件和源文件一致
    3. 链接后软链接文件的链接数大小不一致,硬链接文件和源文件一致
    
    4. 源文件删除时,软链接文件失效!!!!
    

    删除软链接.png

    4.属性详细-数据类型

    linux系统中一切都看作是文件,有哪些文件类型,如何查看文件类型?

    符号:-         # 表示普通文件——纯文本文件、二进制文件、数据文件
    符号:d		# 表示一个目录
    符号:l	    # 表示一个文件的链接文件,Windows的快捷方式  链接文件分为:软链接和硬链接
    符号:c/b      # 表示系统的设备文件
    符号:s		# 表示网络文件
    

    普通文件说明

    纯文本文件:可以直接编辑的文件
    二进制文件: 不可以编辑的文件,可以执行运行的文件
    数据文件: 压缩文件
    

    设备文件说明

    c:字符块文件,不停输出字符的文件
    b:块文件,存储设备文件
    # 磁盘文件 /dev/sda
    # 输出设备 /dev/zero
    # 输入设备 /dev/wall
    # 随机设备 /dev/urandom
    

    查看文件类型命令 file

    [root@oldgirl /test ]# file test1.txt 
    test1.txt: ASCII text  # 文本文件
    
    [root@oldgirl /test ]# file oldboy1
    oldboy1: directory     # 目录
    
    [root@oldgirl /test ]# file oldboy.ln
    oldboy.ln: symbolic link to `oldboy1'   # oldboy.ln 是oldboy1的连接文件
    

    5.属性详细-权限

    每个文件或目录都有一组共9个权限位,每三位为一组,他们分别是属主权限位(占三个字符)、用户组权限(占三位字符)、其它用户权限位(占三个字符)

    权限位.png

    属主		# 创建文件的用户
    属组      # 和创建文件用户一个用户组内的用户
    其他用户   # 不在创建文件用户组的用户
    

    三种用户对应的三种权限

    属主用户	# 写权限 w  读权限 r  执行权限 x
    属组用户	# 写权限 w  读权限 r  执行权限 x
    其他用户	# 写权限 w  读权限 r  执行权限 x
    

    写权限、读权限、执行权限 对于文件作用:

    w		# 可以让用户对文件编辑
    r		# 可以让用户读取文件内容
    x		# 可以让用户执行文件
    

    写权限、读权限、执行权限 对于目录作用:

    w		# 可以让用户对目录下创建文件
    r		# 可以让用户查看目录的文件
    x		# 可以让用户进入目录
    

    6.属性详细-用户和用户组

    系统用户的作用

    1. 利用用户登录系统
    2. 利用用户管理系统资源
    3. 利用用户管理系统的进程
    

    系统通过用户的UID查看对应的用户和用户组信息

    [zxzx@oldgirl /test ]$ id root
    uid=0(root) gid=0(root) groups=0(root)
    [zxzx@oldgirl /test ]$ id zxzx
    uid=1001(zxzx) gid=1001(zxzx) groups=1001(zxzx)
    
    # 信息说明
    第一列:显示用户的UID号
    第二列:显示用户所属用户组的gid
    第三列:显示用户所属其他用户组的信息
    

    linux对用户的分三类:管理员用户root 、系统用户、普通用户

    # 1.管理员用户 root
    UID = 0
    # 权限:系统拥有最高权限
    
    # 2.系统用户
    UID = 1-999
    # 权限:只能管理一些系统的进程,不能登录系统,没有用户的家目录
    
    # 3.普通用户
    UID = 1000+
    # 权限:可以管理指定的系统资源,可以登录
    

    如何防止恶意登录系统?

    1. 修改默认远程服务端口号 22   
    2. 禁止直接使用root用户登录
    

    7.属性详细-时间

    利用命令ll查看文件的改变时间,可以使用stat查看文件相关时间

    [zxzx@oldgirl /test ]$ stat test.txt 
      File: ‘test.txt’
      Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
    Device: fd00h/64768d	Inode: 30049       Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2020-04-30 15:01:43.300773841 +0800
    Modify: 2020-04-30 15:01:43.300773841 +0800
    Change: 2020-04-30 15:01:43.300773841 +0800
     Birth: -
     
    # 文件时间说明
    Access		# 访问文件的时间:查看文件内容时间改变 atime
    Modify		# 文件修改时间 mtime
    Change		# 文件属性改变时间 ctime
    

    时间相关命令

    查看系统当前时间 date

    # 查看时间
    [root@oldgirl /old ]# date 
    Fri May  1 16:58:18 CST 2020
    
    # 修改时间显示格式
    date +%F		# 显示年月日 2020-05-01
    date +%Y-%m-%d  # %F
    
    date +%T		# 显示时分秒
    date +%H:%M:%s  # %T
    
    date  +%F_%T	# 不同参数需要连接一起
    date "+%F %T"   # 使用双引号表示一起
    
    # 修改当前时间
    date -s "2014-2-1 9:30"
    date -s 20140102  # 只修改年月日
    
    # 查看历史时间
    date +%F -d "-2day"
    date +%F -d "2day ago"
    # 作用:备份前一天的数据日志
    
    # 查看未来时间
    date +%F -d "2day"
    date +%F -d "+2day"
    

    同步时间命令 ntpdate

    # 需要下载
    yum install ntpdate
    
    # 使用阿里同步
    ntpdate ntp1.aliyun.com
    

    find按照时间查看文件

    find 目录 -mtime +10   # + 表示查找10天修改的文件
    find 目录 -mtime -10   # - 表示查找10内修改的文件
    
  • 相关阅读:
    读书笔记之理想设计的特征
    一些javascript 变量声明的 疑惑
    LINQ 使用方法
    Google MySQL tool releases
    读书笔记之设计的层次
    EF之数据库连接问题The specified named connection is either not found in the configuration, not intended to be used with the Ent
    转载 什么是闭包
    javascript面向对象起步
    Tips
    数据结构在游戏中的应用
  • 原文地址:https://www.cnblogs.com/xuanxuan360/p/12814369.html
Copyright © 2011-2022 走看看