12.22

linux文件属性详解

内容:

1. inodeblock特点与查看

2. 磁盘空间满了的三种常见故障类型排查与解决

3. 文件类型详解与查看

4. linux用户类型及相关文件

5. 服务器的连接与安全

6. 软链接与硬链接的区别,特点及创建

7. linux下彻底删除一个文件的原理与步骤

8. linux下三种时间介绍



第1章 整体说明

12.22- linux文件属性详解​_linux

第2章 inode 与 block

2.1 inode:  index node  索引节点  存放的是文件/目录属性信息,大小,时间,类型,权限,   inode里面唯独不包含文件名本身。(文件的名字不是文件的属性)

2.2 block   块   文件的内容   数据存放的位置

2.3 inode  block 特点

1. inode存放文件的属性,block的位置

2. 创建一个非空文件至少要占用一个inode和至少一个block

3. 在同一个分区中,如果两个文件的inode号码相同,这两个文件互为硬链接,硬链接相当于是文件                

不同的入口

4. block是存放数据的空间

5. block大小4K,比较大的文件会占用多个block,比较小的文件(1K)剩余的空间无法使用

6. 磁盘读取数据是按block为单位读取的

7. 每读取一个block就会消耗一次磁盘I/Oinput/output 磁盘读写)

 

2.4 怎么来的?

预备姿势:

大房子(硬盘)-->划分隔断(分区)-->装修(格式化)-->装修风格(文件系统类型)-->安装门窗(挂载)

inode block 是在格式化创建文件系统的时候诞生

2.5 查看文件内容与  inode block  的关系

用户文件名→inode→block(文件内容)

12.22- linux文件属性详解​_文件_02 

 

2.6 怎么查看inodeblock信息

2.6.1 查看inode

ls  -lhi  /etc/hosts   查看某个文件inode号码

[root@oldboy oldboy]# ls -lhi gao

total 12K

405094 -rw-r--r--. 1 root root   16 Dec 12 14:38 feng

390247 drwxr-xr-x. 2 root root 4.0K Dec 15 03:54 n

df -i   查看系统中一共有多少inode数量    

[root@oldboy n]# df -i

Filesystem     Inodes IUsed  IFree IUse% Mounted on

/dev/sda3      593344 58618 534726   10% /

tmpfs           60748     1  60747    1% /dev/shm

/dev/sda1       51200    42  51158    1% /boot

2.6.2 block   磁盘容量

ls  -lhi  /etc/hosts   查看某个文件大小

[root@oldboy n]# ls -lhi /etc/hosts

260127 -rw-r--r--. 2 root root 177 May 20  2017 /etc/hosts

df   -h    查看磁盘空间使用情况

[root@oldboy n]# df -h 

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3       8.8G  1.7G  6.7G  20% /

tmpfs           238M     0  238M   0% /dev/shm

/dev/sda1       190M   40M  141M  22% /boot

 

软链接和硬连接的区别

 

2.7 【企业案例】磁盘空间满了,no space left on device(磁盘

空间不足

创建测试环境 

mkdir -p /app/logs  

dd if=/dev/zero of=/dev/sdc bs=8K  count=10   创建指定大小文件

ls -l /dev/sdc

mkfs.ext4 /dev/sdc                格式化并创建文件系统(ext4)

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

2.7.1 block满了

dd if=/dev/zero of=/dev/sdc bs=8K  count=10    模拟大文件

解决:删大文件,腾出空间

2.7.2 inode满了

touch {1..10}                                   模拟多个文件

解决:删小文件,腾出名额限制

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

错误:inode用光了

原因:大量的小文件    ---定时任务书写错误导致

 

 

 第3章 文件类型

扩展名 .log   .txt  .conf   .avi  用来区分不同类型的文件

3.0.1 windows:   强制、严格通过扩展名识别不同类型文件

3.0.2 Linux:    扩展名方便我们人类区分不同文件类型

3.0.3 拓展名含义:   .conf    配置文件

.sh      脚本(命令大礼包)

3.0.4 linux下面常见的文件类型

-  (ls)  f (file)   普通文件    

d          d            目录

l          l            软链接   符号链接   快捷方式

3.0.5  普通文件详解    

1. 纯文本文件  text     /etc/hosts

2. 二进制文件(命令)   /bin/ls

3. 数据文件(data)       压缩包

3.0.6 file    查看文件的类型

file  /tmp/etc.tar.gz

第4章 linux用户基础内容

UID   user   id    用户id

   GID   group  id    用户组id

 

 

4.0.1 linux用户分类

root        皇帝   UID==0

虚拟用户   傀儡   linxu下面每个程序、进程都需要一个对应的用户和组

                  无法登录系统    UID==1--499

普通用户      百姓   UID=500+   6万多)

4.0.2 id   查看用户id和所属组     id  oldboy

[root@oldboy n]# id root

uid=0(root) gid=0(root) groups=0(root)

4.0.3 对于一个文件/用户来说,用户分为几种

/etc/hosts         主人       亲戚        陌生人

          属主(所有者)    属组       其他区用户

[root@oldboy n]# ls -l 6

-rw-r--r--. 1 root root 0 Dec 22 07:28 6

-普通文件   rw- 所有者   r--属组    r--其他用户    

4.0.4 linux权限

r          读                         4  

w          写                         2

x          可执行(命令  脚本)       1

-          没有权限

4.0.5 与用户相关的文件

/etc/passwd        存放用户的信息

/etc/shadow        存放用户密码

/etc/group          存放用户组信息

/etc/gshadow       存放用户组密码

 

4.0.6 /etc/passwd文件详解

12.22- linux文件属性详解​_linux_03 

centos6.9 默认shell  /bin/bash  

第5章 服务器的连接与安全

5.0.1 连接到服务器:

1. ip

2. 用户

3. 密码

4. 端口号22

 

5.0.2 保护服务器:

1. 修改远程连接端口号

2. 禁止root用户远程登录系统

 

第6章 软连接(soft  linksymlink)与硬链接(hard  link

6.1 硬链接

6.1.1 概念:

文件(超市)的入口           硬链接

文件(超市)的入口数量       硬链接数量

在同一个分区中,inode号相同的文件互为硬链接

6.1.2  ln    创建链接      默认创建硬

[root@oldboy gao]# ln yun.txt yun.txt_hard

[root@oldboy gao]# ls -lhi yun.txt*

390247 -rw-r--r--. 2 root root 0 Dec 22 08:24 yun.txt

390247 -rw-r--r--. 2 root root 0 Dec 22 08:24 yun.txt_hard

6.1.3 作用:防止文件误删除,,两个入口,存在一个即可

6.1.4 特点:

1. 硬链接与原文件在同一分区,inode相同

2. 硬链接不可跨文件系统创建

3. 删除原文件,硬链接可用

4.不能对目录创建硬链接

6.2 软链接:   -s       默认权限 777

6.2.1 概念:

相当于windows的快捷方式

指向源文件

源文件丢失,软链接失效

6.2.2 ln  -s  创建软链接   

[root@oldboy gao]# ln -s yun.txt yun.txt_soft

[root@oldboy gao]# ls -lhi yun*

390247 -rw-r--r--. 2 root root 0 Dec 22 08:24 yun.txt

390247 -rw-r--r--. 2 root root 0 Dec 22 08:24 yun.txt_hard

405095 lrwxrwxrwx. 1 root root 7 Dec 22 08:29 yun.txt_soft -> yun.txt  指向源文件

 

6.2.3 特点:

1)软链接可跨文件系统建立

2)创建软链接尽量使用绝对路径(相对路径--源文件路径改变软链接不可用)

3)删除源文件,软链接失效

4)指向源文件,相当于windows的快捷方式

 

6.2.4 错误:创建软链接时使用相对路径,原文件移动位置,导致软链接不可用

特点:一闪一闪亮晶晶

12.22- linux文件属性详解​_文件_04 

6.2.5 结论:创建软链接用绝对路径

ln  -s  /oldboy/ett.txt     ett.txt_soft

6.3 总结

1) 删除原文件,软连接不可用

2) 删除硬链接,都没有影响

3) 删除源文件和硬链接,相当于没有任何入口(硬链接数为0

 

第7章 Linux下面一个文件被彻底删除的条件

1. 文件的硬链接数为0                        rm

2. 进程调用数为0(谁还在使用这个文件)      lsof

 

7.0.1  lsof |grep secure 查看被进程调用的文件(是否有进程正在使用被删除的文件)

12.22- linux文件属性详解​_属性 _05 

7.0.2 企业案例:  磁盘空间满了,删除大文件,可磁盘空间并没有减小

分析:你把文件删除了(硬链接),但这个文件还有进程在使用,所以这个文件并没有被彻底删除,最终导致磁盘空间不足

就好像你只是把超市的大门封住了,但超市本身还在

 

 

 

解决步骤

1.模拟环境

seq 500000 >>/var/log/messages

2.查看磁盘空间    df -h    逐层排查

[root@oldboy /]# df -h         查看那个分区占空间大

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3       8.8G  6.3G  2.1G  75% /

tmpfs           238M     0  238M   0% /dev/shm

/dev/sda1       190M   40M  141M  22% /boot

 

3.[root@oldboy /]# du -sh /var/* |grep "G"    进目录进一步排查哪个子目录/文件大

4.6G /var/log

[root@oldboy /]# du -sh /var/log/* |grep "G"

4.6G /var/log/messages

 

4.删除文件  ---询问boss后删除

\rm /var/log/messages -f

 

检查:

5.查看磁盘空间

[root@oldboy /]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3       8.8G  6.3G  2.1G  75% /

tmpfs           238M     0  238M   0% /dev/shm

/dev/sda1       190M   40M  141M  22% /boot

磁盘空间并没有被释放     由此---有某个文件并没有被彻底删除

6.lsof  |grep messages查看哪个进程在使用被删除的文件

[root@oldboy /]# lsof |grep messages

rsyslogd   2491      root    1w      REG                8,3 4888893610     141095 /var/log/messages (deleted)

标志(detele)这个文件没有被彻底删除(硬链接数为0,进程调用数不为0

 

7.重启进程     /etc/init.d/rsyslog  restart

 

再次检查

8.查看磁盘空间 df -h

[root@oldboy /]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3       8.8G  1.7G  6.7G  21% /

tmpfs           238M     0  238M   0% /dev/shm

/dev/sda1       190M   40M  141M  22% /boot

磁盘空间被释放

 

7.0.3 总结:  

1.找出系统中硬链接数为0,进程调用数不为0的文件(没有被彻底删除的文件)

lsof  |grep delete

 

2.排查哪个文件占地大     du -   sh  /* |grep G

[root@oldboy /]# du -sh /*|grep "G"

du: cannot access `/proc/50234/task/50234/fd/4': No such file or directory

du: cannot access `/proc/50234/task/50234/fdinfo/4': No such file or directory

du: cannot access `/proc/50234/fd/4': No such file or directory

du: cannot access `/proc/50234/fdinfo/4': No such file or directory

1.1G /usr

4.7G /var

3.以后会学习各种软件/服务日志及命令

 

7.1 磁盘空间系列小结:

7.1.1 block满了   文件没有被彻底删除(硬链接为0,进程调用数不为0

工作中   lsof |grep delete  排查

7.1.2 block满了  正常满了

df -h 哪里满了

du  -sh  /* 一层一层排查  具体哪个目录/文件

确认之后,询问boss是否 删除

7.1.3 inode用光了

 某个目录下有大量的小文件   

 ----定时任务错误

解决方法:找出系统中目录大小大于1M

[root@oldboy oldboy]# ls -lhd xiaodong/

drwxr-xr-x. 2 root root 4.0K May 20 23:22 xiaodong/

[root@oldboy oldboy]# du -sh xiaodong/

11M xiaodong/

目录本身大小和目录下文件数量有关,与文件大小无关

目录占地面积     -----文件越多,占地越大

touch  {1..10000}.txt

[root@oldboy oldboy]# ls -ldih xiaodong

394659 drwxr-xr-x. 2 root root 252K May 20 16:53 xiaodong

 

 

7.2 如何在linux中删除的大量的小文件

删除文件太多,删不了

[root@oldboy xiaodong]# \rm -f *.txt

-bash: /bin/rm: Argument list too long

解决:

1ls *.txt  |xargs rm     删除大量文件

[root@oldboy xiaodong]# ls *.txt|xargs rm

[root@oldboy xiaodong]# ls

注:2)删上亿个文件    一点一点删   否则会卡

3)删除目录(删除之前记录好目录的权限和所有者)

 

7.3 如何在linux中创建大量小文件

错误:

[root@oldboy xiaodong]# touch {1..400000}.txt

-bash: /bin/touch: Argument list too long

解决:

echo {1..500000}.txt  |xargs touch   创建太多文件

 

 

 

第8章 linux 下面几种时间

8.1 文件被修改或被访问的时间

mtime  modify time 【修改时间】文件/目录的修改时间。文件内容修改

ctime   change time 【属性改变时间】文件/目录属性的改变时间,大小,硬链接数,权限,所有者,所属的组,类型

atime   access time  【访问时间】文件/目录的访问时间,cat查看

 

8.2 stat  显示文件时间信息    stat /oldboy.txt

 

[root@oldboy oldboy]# stat oldboy.txt

  File: `oldboy.txt'

  Size: 29         Blocks: 8          IO Block: 4096   regular file

Device: 803h/2051d Inode: 405110      Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2017-12-22 03:11:51.662787272 +0800

Modify: 2017-05-20 06:27:29.100976131 +0800

Change: 2017-05-20 06:27:29.100976131 +0800

 

8.3 atime  短期内查看次数多只计入一次  (防止磁盘空间浪费)

 

 

第9章 总结:

1. 文件属性总体介绍

2. inodeblock  怎么来的 啥意思 特点

3. 企业案例  磁盘空间不足  原因

4. 用户分类

5. /etc/passwd  每一列含义

6. linux权限  

7. linux软链接与硬链接

 

第10章 注意

10.1 硬链接文件两个文件inode号相同 占用了几个两个inode一个block

10.2 touch {1..100}   快速创建多个文件

 

10.3 mv     原地移动相当于重命名

10.4 文件夹和文件都消耗inodeblock