Day 15 Linux文件属性

文件属性

[root@CJY ~]# ls -lhi

total 248K

267233   -rw-r--r--   1  root  root  32   May 20 09:09  1.txt

267217   -rw-r--r-- . 1  root  root   0   Jul 12  2018  alex.txt

267213   -rw------- . 1  root  root 1.1K  Jul 12  2018  anaconda-ks.cfg

785640   drwxr-xr-x.  2  root  root 4.0K  Jul 12  2018  data

267227   -rw-r--r--   1  root  root  62K  Jul 20  2018  day_2_Linux发展环境准备.png

267231   -rw-r--r--   1  root  root  27K  Jul 20  2018  day_7_Linux_简单优化.png

 

Day 15 Linux文件属性_第1张图片

 

inode号码   文件类型  权限        硬链接数 属主    属组

索引节点                                   所有者  属于家庭   大小 修改时间     文件名(不是文件属性)

index node

×××

硬链接    大门

硬链接数  超市的前后门数量

inode索引节点包含文件属性,block的位置但没有文件名

1.1 inodeblock 区别

inode  索引节点 ×××号码    文件属性信息 (大小 权限 时间 文件类型 硬连接数)

                              block的位置

                              没有文件名

 

block 数据块                  文件的内容

 

1.2 cat oldboy.txt inodeblock的关系

通过文件名找到inode号码,而这inode号码中存储的文件属性信息(大小,时间,权限,文件类型,硬链接数)还有block的位置,可以通过block的位置从而显示文件内容.

 

Day 15 Linux文件属性_第2张图片

1.3 inodeblock的特点

 

Day 15 Linux文件属性_第3张图片

1.4 企业案例:

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

 

1.4.1 inode用光了

大量的小文件(定时任务)

1.5 模拟磁盘空间不足

1.5.1 #1.block满了

 

环境准备

seq 500000000   >>/var/log/nt.avi

 

[root@oldboyedu50-lnb ~]# du -sh /  查找根下的目录

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

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

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

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

16G /

[root@oldboyedu50-lnb ~]# du -sh /*  显示根哪个目录大

8.0K   /app

8.0K   /backup

7.6M   /bin

38M /boot

68K /data

220K   /dev

30M /etc

24K /home

214M   /lib

27M /lib64

16K /lost+found

4.0K   /media

4.0K   /mnt

52K /oldboy

32K /opt

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

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

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

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

0   /proc

372K   /root

16M /sbin

4.0K   /selinux

4.0K   /srv

0   /sys

99M /tmp

1.1G   /usr

14G /var

 

[root@oldboyedu50-lnb ~]# du -sh /var/*|grep G 

14G /var/log

[root@oldboyedu50-lnb ~]# du -sh /var/log/*|grep G

14G /var/log/lidao.mp4

[root@oldboyedu50-lnb ~]# ls -lh /var/log/lidao.mp4

-rw-r--r-- 1 root root 14G Jul 27 10:16 /var/log/lidao.mp4

 

df -h 查看 看空间满了吗 看哪里满了

排查出大文件du -sh /*

可以用grep过滤 du -sh /* |grep G

排查到具体文件或目录

确认后才可考虑删不删除

sort排序 du -sh | sort -hr

 

1.5.2  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

 

df -h看空间满没满 没满df -I 查看inode

.inode   df -i; 找出系统中目录大小大于1M  删除小文件

                 find / -type d   -size +1M

因为目录中存放的是目录中的文件名

rm -f * 删除所有小文件 可能文件太多无法删除

使用ls |xargs rm

 

1.5.3 #模拟inode用光

[root@oldboyedu50-lnb ~]# df -i

Filesystem      Inodes IUsed   IFree IUse% Mounted on

/dev/sda3      1250928 57431 1193497    5% /

tmpfs           238282     1  238281    1% /dev/shm

/dev/sda1        51200    39   51161    1% /boot

/dev/sdc            16    11       5   69% /app/logs

 

1.5.4 #准备模拟 block 满了

[root@oldboyedu50-lnb ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        19G   16G  2.4G  87% /

tmpfs           931M     0  931M   0% /dev/shm

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

/dev/sdc         73K   14K   55K  21% /app/logs

[root@oldboyedu50-lnb ~]# ls -lh /bin/ls

-rwxr-xr-x. 1 root root 115K Mar 23  2017 /bin/ls

[root@oldboyedu50-lnb ~]# cp /bin/ls /app/logs/

cp: writing `/app/logs/ls': No space left on device

[root@oldboyedu50-lnb ~]# \rm -f /app/logs/ls

[root@oldboyedu50-lnb ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        19G   16G  2.4G  87% /

tmpfs           931M     0  931M   0% /dev/shm

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

/dev/sdc         73K   14K   55K  21% /app/logs

1.5.5 #解决 block满了

1.6 排序

 

seq 20|sort -hr

-h

-r

 

du -sh /*|sort -h

 

1.7 #创建多个小文件

[root@oldboyedu50-lnb ~]# touch /app/logs/{1..7}.txt

touch: cannot touch `/app/logs/6.txt': No space left on device

touch: cannot touch `/app/logs/7.txt': No space left on device

[root@oldboyedu50-lnb ~]# touch  /app/logs/oldboy.txt

touch: cannot touch `/app/logs/oldboy.txt': No space left on device

 

1.8 #排查

[root@oldboyedu50-lnb ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        19G   16G  2.4G  87% /

tmpfs           931M     0  931M   0% /dev/shm

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

/dev/sdc         73K   14K   55K  21% /app/logs

[root@oldboyedu50-lnb ~]# df -i

Filesystem      Inodes IUsed   IFree IUse% Mounted on

/dev/sda3      1250928 57431 1193497    5% /

tmpfs           238282     1  238281    1% /dev/shm

/dev/sda1        51200    39   51161    1% /boot

/dev/sdc            16    16       0  100% /app/logs

 

1.9 #解决

1.10 小结:磁盘空间不足

 

1.block    排查                               解决

          df -h;一层一层du -sh /              确认之后再删除

         

2.inode   df -i; 找出系统中目录大小大于1M     删除小文件

                 find / -type d   -size +1M 

 

1)找出系统中小于4k的文件(awk数组)

Day 15 Linux文件属性_第4张图片

2)找出系统中目录大小大于1M 找出哪个目录中 有大量小文件

   目录的block 存放的是目录中的文件名

2.1删除大量小文件

 

[root@oldboyedu50-lnb ~]# mkdir  -p /tmp/test

[root@oldboyedu50-lnb ~]# cd /tmp/test

[root@oldboyedu50-lnb /tmp/test]# touch {1..500000}

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

[root@oldboyedu50-lnb /tmp/test]#

[root@oldboyedu50-lnb /tmp/test]# echo {1..500000}|xargs touch

 

[root@oldboyedu50-lnb /tmp/test]# echo {1..500000}|xargs touch

[root@oldboyedu50-lnb /tmp/test]# ls |wc -l

500000

 

2.2故障:无法删除大量文件

[root@oldboyedu50-lnb /tmp/test]# \rm -f *

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

[root@oldboyedu50-lnb /tmp/test]# ls

 

2.3解决:删除大量文件

[root@oldboyedu50-lnb /tmp/test]# ls |xargs rm

[root@oldboyedu50-lnb /tmp/test]# ls

[root@oldboyedu50-lnb /tmp/test]# ll

total 0

 

2.4小结:删除大量小文件

1.ls/find +|xargs rm

2.缩小范围删除

  ls 1*  |xargs rm

  ls 2*  |xargs rm

3.删除文件所在目录 (记录好权限和属性)

 

2.5 显示UID GID Group

[root@oldboyedu50-lnb /tmp/test]# id

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

[root@oldboyedu50-lnb /tmp/test]# id oldboy

uid=500(oldboy) gid=500(oldboy) groups=500(oldboy)

[root@oldboyedu50-lnb /tmp/test]# id  nobody

uid=99(nobody) gid=99(nobody) groups=99(nobody)

[root@oldboyedu50-lnb /tmp/test]# su - oldboy

[oldboy@oldboyedu50-lnb ~]$ logout

[root@oldboyedu50-lnb /tmp/test]# su - nobody

This account is currently not available.

 

总结

1.ls -lhi 每一列含义

2.inodeblock含义 特点

3.故障案例:磁盘空间不足inode block 排查 解决过程

4.删除大量小文件

5.用户分类

6./etc/passwd