linux中文件属性中数组=1000,Day 15 Linux文件属性

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

d24e15c39658e265d70c2afdfcc9bfc5.png

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

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

index node

×××

硬链接大门

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

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

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

block的位置

没有文件名

block 数据块                  文件的内容

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

91c4b3e28254be8965525d43185fe10b.png

1.3 inode与block的特点

f81780018f88370ab760b8a6aac418c6.png

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

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

环境准备

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满了

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

[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.block    排查                               解决

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

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

find / -type d   -size +1M

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

74a5db3fe4f049f44313c5bd17002b37.png

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.inode与block含义 特点

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

4.删除大量小文件

5.用户分类

6./etc/passwd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值