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

    一、什么是属性?

    属性是一些描述性的信息,可以用来帮助您查找和整理文件。属性未包含在文件的实际内容中,而是提供了有关文件的信息。文件名在linux中是严格区分大小写的。

    一、什么是文件属性?

    文件属性是ls -lhi  每一列的含义

    三、文件属性的内容?

     [root@oldboyedu01-nb ~]# ls -lhi /etc/hosts 

    390174 -rw-r--r--. 2 root root 200 Sep 25 20:19 /etc/hosts
    [root@oldboyedu01-nb ~]# #文件属性=====ls -lhi 每一列的含义
                                    用户属于的家庭    文件修改时间 文件名
    390174   -     rw-r--r--  .        2       root   root       200    Sep 25 20:19 /etc/hosts
    inode号码 文件的类型 文件的权限.(与selinux有关) 文件硬链接数量 主人 家人      文件大小

    文件名不是文件的属性。

    四、什么是inode号码?

    inode用来存储这些数据属性信息的(ls -l 的结果),inode属性信息包含不限于文件大小、属性、归属的用户组信息、文件权限、文件类型、修改时间、还包含实体指针功能,但是inode唯独不包含文件名。inode:CentOS6默认大小是256个字节。

    五、获得一个硬盘可以向一个硬盘中存放数据的简介?

    硬盘(房子),分区(划分隔断),格式化创建文件系统(装修不同的风格),挂载(安装门窗)

    获得硬盘相当于或得一个房子,获取房子后我们要对房子进行划分隔断,划分完隔断后,我们对房子进行装修,对于装修我们有不同的风格比如复古风,装修完房子后我们要对房子进行安装门窗。

    四、inode 和block是怎么来的?

    格式化创建文件系统,磁盘被分区并格式化为ext4文件系统后生成一定数量的indoe和block

    五、inode的讲解?

    1)含义
    index node索引节点
    含义:
    用来存放文件属性的空间。通过inode号码找到这个空间的。
    inode号码----家庭住址
    inode空间----家庭
    注意:
    文件名不存放在inode中。

    2)怎么来的
    格式化创建文件系统

    3)特点
    1#inode是用来存储这些数据属性信息的(ls -l 的结果)
    2#inode称为index node索引,它的作用是存放文件的属性信息以及文件内容的索引位置
    3#ext3/ext4文件系统的block存放的是文件的实际内容
    4#inode是表现形式的一串数字,inode号码相当于家庭地址,不同的文件对应的inode在文件系统里是唯一的
    硬链接数量====超市入口的数量
    5#inode节点号相同的文件,互为硬链接文件,可以认为是一个文件不同的入口

    6#ext3/ext4文件系统格式,正常情况一个文件只能占用一个inode

    4)怎么用/看******
     ls -i(看某些文件的inode号码)
    df -i(系统里面inode用了多少剩余多少)

    六、block的讲解

    block
    1)含义
    数据块
    block实际存放数据的位置,每个block的大小一般1K、2K、4K几种,期中引导分区是1K,其它普通分区是多位4K
    2)怎么来的
    格式化创建文件系统

    3)特点

    1)、 如果一个文件很大,需要占用多个block,如果文件很小至少占用一个block,并且这个block的剩余空间就浪费了
    2)、 磁盘读取数据是按照block读取数据的
    3)、一个文件可能占用多个block,每读取一个block就会消耗一次磁盘I/O
    4)、如果要提升磁盘IO性能,那么就要尽可能一次性读取数据尽量的多。
    5)、无论内容有大小,如果block默认是4K大小,那么存放一个1K文件,剩余3K就不能存放别的文件,浪费空间。
    6)、block并非越大越好,block大小对于存放小文件就会浪费磁盘空间。
    7)、根据业务需求,确定默认的block大小,如果大文件一般设置block大一点,反之亦然。
    8)、block太大,例如:4K,存放文件都是1K,大量磁盘空间浪费,但是访问性能提高
    9)、blcok太小,例如:1K,文件都是1000K的,消耗大量磁盘I/O
    10)、没读取一个block就要消耗一次磁盘I/O

    4)怎么用/怎么看
     df -h(磁盘block使用情况)
     ls -lh
    小结:
    inode与block小结:
    1.格式化创建文件系统
    2.在同一个文件系统(分区),两个文件inode相同,互为硬链接
    3.创建一个非空文件要占用一个inode和至少1个block
    4.如何查看inode和block的使用情况 df -i df -h

    七、访问oldboyfile的寻宝过程

    第一步:
    oldboyfile(文件名字):
    文件名相当于藏宝图名字,这里存放的是藏宝图的位置也就是inode号码,
    第二步:
    藏宝图存放的是 宝藏的位置和属性,
    相当于blcok的位置数据的实体也就是宝藏的位置,和文件的属性,比如文件大小、文件类型,所属用户等等
    第三步:
    block文件的数据内容,也就是宝藏了。
    可以参考例图:
    oldboyfile寻宝过程.png

    八、企业案例:如果向磁盘写入数据提示如下错误:No space left on device(磁盘空间不足),通过df -h查看磁盘空间,发现没满,请问可能原因是什么?企业场景什么情况下会导致这个问题发生?

    1.500G 我向里面放入600G的数据 ----磁盘空间满了 block满了 df -h
    2.df -h 磁盘空间还剩余很多,但是还是报错 no space left on device inode用光了。

    ####创建测试环境

    mkdir -p /app/logs
    dd if=/dev/zero of=/dev/sdc bs=8K count=10
    ls -l /dev/sdc
    mkfs.ext4 /dev/sdc


    mount -o loop /dev/sdc /app/logs


    [root@oldboyedu-39-nb ~]# df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/sda3 8.8G 1.6G 6.8G 19% /
    tmpfs 931M 0 931M 0% /dev/shm
    /dev/sda1 190M 40M 141M 22% /boot
    /dev/sdc 73K 14K 55K 21% /app/logs


    ######磁盘空间满了之 block满了
    [root@oldboyedu-39-nb ~]# df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/sda3 8.8G 1.6G 6.8G 19% /
    tmpfs 931M 0 931M 0% /dev/shm
    /dev/sda1 190M 40M 141M 22% /boot
    /dev/sdc 73K 14K 55K 21% /app/logs
    [root@oldboyedu-39-nb ~]# cd /app/logs/
    [root@oldboyedu-39-nb logs]# ls -lh /bin/ls
    -rwxr-xr-x. 1 root root 115K Mar 23 02:52 /bin/ls
    [root@oldboyedu-39-nb logs]# cp /bin/ls /app/logs/
    cp: writing `/app/logs/ls': No space left on device
    [root@oldboyedu-39-nb logs]# cp /bin/awk /app/logs/
    cp: writing `/app/logs/awk': No space left on device
    [root@oldboyedu-39-nb logs]# df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/sda3 8.8G 1.6G 6.8G 19% /
    tmpfs 931M 0 931M 0% /dev/shm
    /dev/sda1 190M 40M 141M 22% /boot
    /dev/sdc 73K 70K 0 100% /app/logs
    [root@oldboyedu-39-nb logs]# cd /app/logs/
    [root@oldboyedu-39-nb logs]# ls -lh
    total 68K
    -rwxr-xr-x 1 root root 0 May 20 12:39 awk
    drwx------ 2 root root 12K May 20 12:36 lost+found
    -rwxr-xr-x 1 root root 56K May 20 12:39 ls
    [root@oldboyedu-39-nb logs]# m -f ls
    [root@oldboyedu-39-nb logs]# df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/sda3 8.8G 1.6G 6.8G 19% /
    tmpfs 931M 0 931M 0% /dev/shm
    /dev/sda1 190M 40M 141M 22% /boot
    /dev/sdc 73K 14K 55K 21% /app/logs

    ######磁盘空间满了之 inode用光了
    [root@oldboyedu-39-nb logs]# pwd
    /app/logs
    [root@oldboyedu-39-nb logs]# touch {1..6}.txt
    touch: cannot touch `6.txt': No space left on device
    [root@oldboyedu-39-nb logs]# df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/sda3 8.8G 1.6G 6.8G 19% /
    tmpfs 931M 0 931M 0% /dev/shm
    /dev/sda1 190M 40M 141M 22% /boot
    /dev/sdc 73K 14K 55K 21% /app/logs
    [root@oldboyedu-39-nb logs]# touch oldboy.txt
    touch: cannot touch `oldboy.txt': No space left on device
    [root@oldboyedu-39-nb logs]# df -i
    Filesystem Inodes IUsed IFree IUse% Mounted on
    /dev/sda3 593344 57034 536310 10% /
    tmpfs 238282 1 238281 1% /dev/shm
    /dev/sda1 51200 39 51161 1% /boot
    /dev/sdc 16 16 0 100% /app/logs

    [root@oldboyedu-39-nb logs]# ls -l
    total 12
    -rw-r--r-- 1 root root 0 May 20 12:43 1.txt
    -rw-r--r-- 1 root root 0 May 20 12:43 2.txt
    -rw-r--r-- 1 root root 0 May 20 12:43 3.txt
    -rw-r--r-- 1 root root 0 May 20 12:43 4.txt
    -rw-r--r-- 1 root root 0 May 20 12:43 5.txt
    drwx------ 2 root root 12288 May 20 12:36 lost+found
    [root@oldboyedu-39-nb logs]# m -f *.txt
    [root@oldboyedu-39-nb logs]# df -i
    Filesystem Inodes IUsed IFree IUse% Mounted on
    /dev/sda3 593344 57034 536310 10% /
    tmpfs 238282 1 238281 1% /dev/shm
    /dev/sda1 51200 39 51161 1% /boot
    /dev/sdc 16 11 5 69% /app/logs


    企业案例:如果向磁盘写入数据提示如下错误:No space left on device(磁盘空间不足),通过df -h查看磁盘空间,发现没满,请问可能原因是什么?


    企业场景什么情况下会导致这个问题发生?
    定时任务


    磁盘空间满了:
    情况一:block-500G磁盘存放400G+200G视频 放不下了。
    情况二:inode-大量的小文件

    磁盘空间不足的案例

    no space left on device磁盘空间不足-因为block满了。
    创建大文件的案例:seq 100000000 >/tmp/big
    #第一个里程碑-看看到底哪里满了
    [root@oldboyedu01-nb ~]# df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/sda3 8.8G 8.8G 0 100% /
    tmpfs 1.9G 0 1.9G 0% /dev/shm
    /dev/sda1 190M 40M 141M 22% /boot

    #第二个里程碑-是哪一个目录占得空间大,最终定位到目录或文件
    [root@oldboyedu01-nb ~]#
    [root@oldboyedu01-nb ~]# du -sh /*|grep G
    1.1G /usr
    7.4G /var
    [root@oldboyedu01-nb ~]# du -sh /var/*|grep G
    7.3G /var/log
    [root@oldboyedu01-nb ~]# du -sh /var/log/*|grep G
    7.3G /var/log/messages
    [root@oldboyedu01-nb ~]# ls -lh /var/log/messages
    -rw------- 1 root root 7.3G Oct 16 19:20 /var/log/messages
    #第三个里程碑-问清楚是否可以删除,然后在操作。

    十、文件类型?

    1、普通文件 - (file)
    2、(纯)文本文件(ASCII)
    3、二进制文件(binary)
    4、数据格式文件(data)

    linux下都有哪些普通文件类型有:

    1、f  file  普通文件

    2、d  directory  目录

    3、-(regular file) 表示这是一个普通文件
    4、l(soft link) 表示这是一个符号/软链接文件
    5、b(block) 表示这是一个块设备文件
    6、c(character) 表示这是一个字符设备文件
    7、s(socket) 表示这是一个Socket(套接字)文件
    8、p(named pipe) 表示这是一个管道文件

    查看文件类型:file

    root@oldboyedu-39-nb tmp]# ls -l /etc/hosts /tmp/etc.tar.gz /bin/ls
    -rwxr-xr-x. 1 root root 117048 Mar 23 02:52 /bin/ls
    -rw-r--r--. 2 root root 189 May 20 09:45 /etc/hosts
    -rw-r--r-- 1 root root 9733974 May 20 02:51 /tmp/etc.tar.gz
    [root@oldboyedu-39-nb tmp]# file /etc/hosts
    /etc/hosts: ASCII text
    [root@oldboyedu-39-nb tmp]# file /tmp/etc.tar.gz
    /tmp/etc.tar.gz: gzip compressed data, from Unix, last modified: Sat May 20 02:51:31 2017
    [root@oldboyedu-39-nb tmp]# #compressed 压缩的文件
    [root@oldboyedu-39-nb tmp]#
    [root@oldboyedu-39-nb tmp]# file /bin/ls
    /bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped

    十、文件的扩展名---文件后面的小尾巴
    1、介绍
    windows windows通过扩展名区分不同类型的文件
    linux 扩展名是用来给我们看的,linux是不区分文件扩展名的,
    2、常用的
    .sh 脚本文件
    .conf 配置文件

    十一、用户可以分为那几类?
    1、主人 所有者的名字
    2、家人 所有者属于组的名字
    3、陌生人

    4、查询用户的id号码和属于哪个用户组
    id oldboy

    5、UID user id 用户的id号码-------------身份证号码
    6、GID group id 用户组的id号码-----------户口本的号码
    7、root 用户的UID是0
    8、傀儡虚拟用户 UID是1-499 系统中每个进程都要一个对应的用户
    9、贫民百姓 普通用户 UID是500+
    10、如何保护皇帝root用户
    1)、禁止root远程登录
    2)、修改ssh默认端口号是22
    3)、定期分析var/log/secure 记录着用户的登录信息

    11、与用户相关的文件
    1)、/etc/passwd 存放的是用户的信息
    root :x:0 :0 :root:/root :/bin/bash
    oldboy:x:500:500: :/home/oldboy:/bin/bash
    第一列:用户名字
    第二列:存放密码的地方
    第三列:UID
    第四列:GID
    第五列:用户的说明信息,默认为空
    第六列:用户的家目录

    ~
    root ~ /root
    oldboy ~ /home/oldboy

    2)、/etc/shadow 用户密码信息
    3)、/etc/group 用户组的信息
    4)、/etc/gshadow 用户组密码信息
    5)、/etc/skel

    十二、linux基础权限介绍?

    r 4 文件可以读取文件内容
    w 2 write修改文件内容
    x 1 execute可以运行文件(命令、脚本)
    - 0 什么权限都没有

    - rw- r-- r--. 2 root root 181 5月 12 14:14 /etc/hosts
    主人 家人 陌生人
    420 400 400
    6 4 4

    十三、硬链接和软连接
    1、什么是软连接?
    1)、软连接有什么特征?
    1.软连接类似于windows快捷键
    2.软连接拥有自己的i节点和Block块,但是数据块中只保存源文件的文件名和i节点号,并没有实际文件数据
    3.文件类型是l
    4.修改任意的文件,另一个都改变
    5.删除(改名)原文件,软连接不能使用
    6.再将文件创建(改名)成源文件,软连接即可重新使用
    7.创建软连接 ln -s 示例例如:ln -s oldboy.txt oldboy.txt.soft

    2、什么是硬链接?
    1)、 硬链接有什么特征?
    1.硬链接相当于前后门,通过不同的超市进入超市
    2.在同一个分区中,两个文件或多个文件的inode号码相同,这些文件互为硬链接
    3.拥有相同的i节点和存储block块,可以看作是同一个文件
    4.可以通过i节点识别
    5.不能跨分区
    6.不能针对目录使用
    7.删除硬链接或源文件,文件还是可以使用的
    8.把硬链接和源文件都删除,文件被删除====硬链接数量是0
    9.创建硬链接:ln oldboy.txt oldboy.txt-hard

    3、硬链接和软连接有什么区别?
    1)、 如何创建
    默认不带参数情况下,ln命令创建的是硬链接,带-s参数的ln命令创建的是软连接
    2)、 含义
    硬链接 文件源文件的inode节点相同,而软连接文件相当于windows下的快捷方式(inode节点号与源文件不同)
    3)、特点
    不能对目录创建硬链接,但是可以创建软连接,对目录的软连接经常会用到
    软连接可以跨文件系统,硬链接不可以跨文件系统
    4)、怎么没的
    a)、删除软连接文件,对原链接文件及硬链接文件无任何影响
    b)、删除文件的硬链接文件,对源文件及软连接文件无任何影响
    c)、删除连接文件的源文件,对硬链接没什么影响,但是会导致其软连接失效
    d)、删除源文件及其硬链接文件,整个文件才会被”真正“删除

    5)、文件删除原理
    a)、删除这个文件所有相关的硬链接-rm------删除厕所所有入口
    b)、这个文件的进程调用数是0-----没有人再使用厕所
    硬链接数量为0
    进程调用数为0

    4、某个文件没有被彻底删除,导致磁盘空间没了的情况
    第一步、使用df -h 查看那个磁盘空间满了
    第二步、查看某个文件是否满了du -sh /* | grep G
    du -sh /mnt/* | grep G
    du -sh /mnt/Packages/* | grep G
    第三步、确定某个文件是否可以删除

    5、 如何找到硬链接数为0,进程数不为0
    使用 lsof | grep delete 查看硬链接为0,进程数不为0
    delete 标记 ---硬链接为0,进程调用数不为0

    6、关闭对应的服务  /etc/init.d/rsyslog restart


    7、磁盘空间不足分三种情况
    1)、 block满了,500G硬盘存放505G硬盘
    2)、inode满了,存放了大量的小文件
    3)、 block 硬链接数量是0,进程调用数不为0,文件没有被彻底删除磁盘空间不足

    十四、linux的修改、访问、改变时间。

    mtime modified time 文件的修改时间 文件的内容变化时间

    ctime change time 文件属性的改变时间

    atime access time 文件的访问时间 cat 包含:文件大小、文件权限、硬链接数量

    显示文件属性stat olddboy.txt

    Unix时间戳是什么?

    Unix时间戳是从1970年1月1日开始所经过的秒数,不考虑闰秒。

    十五、文件大小
    文件大小能衡量一个计算机文件的大小,

    字节换算:
    1KB = 1024B
    1MB = 1024KB
    1GB = 1024MB
    1TB = 1024GB
    1PB = 1024TB
    1EB = 1024PB


    十六、正则表达式与通配符
    1、特殊符号
    ' ' 所见即所得,吃啥吐啥
    ” “ 特殊符号被解析运行
    `` ====$() 先运行里面的命令,把结果留下

    > 重定向符号 先清空文件的内容,然后追加文件到最后
    >> 追加重定向 追加文件到最后

    2> 错误重定向 只要错误的信息 才能通过这个漏洞进入文件中
    2>> 错误追加重定向
    ~ 当前用户的家目录
    ! 查找并运行历史命令

    !awk 包含awk的命令 最近的一条运行
    history | grep awk
    # linux注释
    root用户命令的提示符

    $ 取出变量的内容
    awk $取出某一列的内容
    普通用户的命令提示符

    * 所有 任何东西

    撬棍 转义字符

    && 前一个命令执行成功然后再执行后一个命令
    ifdown eth0 && ifup eth0

    || 前一个命令执行失败了再执行后面的命令

    2、 通配符
    通配符是用来查找文件的,以.txt为例, *.txt *.log
    1)、任意 所有 *
    2)、生成序列 {} ,生成拷贝文件 cp oldboy.txt{,.bak}
    3、什么是正则表达式,为何使用它,
    通过符号表示文字内容
    提高效率,省事。
    支持正则表达式:linux三剑客 grep sed awk

    4、使用正则的时候的注意事项
    1)、正则表达式按照行进行处理的
    2)、禁止使用中文符号
    3)、 给grep和egrep配置别名
    5、正则表达式与通配符的区别
    用途 匹配的内容 支持的命令
    通配符---用来匹配查找的文件名 *.txt *.log 以.txt .log结尾的文件 大部分的命令都可以使用
    正则 ---在文件中匹配查找内容 包含oldboy的行 linux三剑客

    6、正则表达式的分类
    1)、基础正则 ^ $ . * [] [^] grep sed awk
    2)、扩展正则 | + {} () ? grep -E/egrep sed -r awk

    7)、正则表达式总结
    连续出现(重复)
    * >=0
    + >=1
    ? 0 1
    {n,m} >=n <=m
    {n} ==n
    其他
    . 任意一个字符
    [abc] 一个整体 相当于是一个字符
    [a-z] [0-9] [A-Z]
    [^abc] 排除
    | 或者
    () 后向引用 反向引用 先保护再使用
    ^
    $
    .* 所有
    ^$ 空行


    8)、查看帮助信息
    1)、 man grep
    2)、 infog grep

    十七、linux权限详解
    1、权限值rwx

    2、如何知道我对某个文件有什么权限?
    1)、 看看你是谁
    whoami
    2)、 你与这个文件或目录是什么关系
    主人 家人 陌生人
    判断是否和这个文件是一家子的
    id===》groups
    oldboy用户是这个文件的陌生人
    3)、oldboy用户对这个文件的权限是最后三位 r--
    3、权限的计算
    r=======4
    w 2
    x 1
    - 0

    drwxr-xr-x
    421401401
    7 5 5
    4、权限的修改
    chmod === chang mode
    1)、使用数字权限修改权限
    chmod 755 oldboy.txt
    2)、使用字母修改权限
    主人 家人 陌生人
    user group other
    u g o
    chmod u+x /oldboy/oldboy.txt
    5、修改所属用户及用户组
    chown oldboy.oldboy /oldboy/oldboy.txt
    6、读取文件内容
    1)、 r读取文件内容
    2)、 w修改文件内容,但是需要r的配合
    3)、 没有r的配合强制修改退出,会清空文件内容
    4)、 x权限执行,需要r权限的配合
    7、文件目录权限
    r 查看目录里面的内容
    w 可以在目录里面创建删除
    x 可以进入目录

    注意:对于目录来说,r表示 查看目录里面内容的权限,ls 需要x的配合
    没有x权限,那么显示的时候文件属性无法显示
    w表示可以在目录中创建 删除文件 重命名文件的权限
    w无法删除 创建文件 w需要x的配合
    文件 目录
    r 读取文件的内容 查看目录的内容(需要x权限)
    w 修改文件的内容(需要r) 在目录下面创建 删除文件(需要x权限)
    x 执行文件(需要r) 进入到目录的权限(cd)

    !!!!!!删除一个文件,要看你对这个文件所在的目录是否有wx权限。

    8、网站需要被运行起来,通过一个傀儡用户运行起来的www
    blog.oldboyedu.com
    网址程序存放在/app/blog目录下面
    1)、 blog目录下面的权限
    file权限 644 dir 755 root root
    2)、 blog/上传 file 644 dir 755 www www
    9、 linux 控制系统默认权限的命令umask
    文件最大权限是 666 022 644
    目录最大权限是 777 022 755
    umask默认最大的计算权限是022
    修改umask 032
    1)、对于目录 777直接减去umask
    2)、对于文件 666减去umask的值,如果umaks某一位上面是奇数,减完umask 之后奇数位数+1

    10、 文件系统属性
    a ------ append 只能追加
    i ------ immutable 无敌的 不可修改的
    查看 文件属性的 lsattr /oldboy/oldboy.txt
    修改 文件属性的 chattr +a /oldboy/oldboy.txt
    11、linux的特殊权限
    1)、suid setuid
    作用:运行这个命令的时候,相当于这个命令的所有者(root)
    形式:S s -rwsr-xr-x
    危险:所有用户运行命令的时候,相当于是root用户
    2)、sticky粘粘位1777 /tmp 目录
    1:任何人都可以在这个目录里面创建文件(原来权限是777)
    2:每个人只能管理自己的权限,其它人处理不了


    [root@oldboyedu-39-nb tmp]# #exec

  • 相关阅读:
    git撤销操作总结
    pull request的一些思考
    设计模式之门面模式
    设计模式之策略模式
    java中的堆栈
    git冲突的处理
    Eclipse 未正常退出,导致进不去的问题
    think in java读后总结---Map集合的几种遍历方式
    maven打包后项目名称不对
    python之正则表达式
  • 原文地址:https://www.cnblogs.com/MouseCat/p/10781581.html
Copyright © 2011-2022 走看看