08-文件
diff 文件内容对比
# cat 1.yml
192.168.1.41
192.168.1.42
192.168.1.43
# cat 2.yml
192.168.1.41
192.168.1.44
192.168.1.43
192.168.1.45
# diff 1.yml 2.yml
2c2
< 192.168.1.42
---
> 192.168.1.44
3a4
> 192.168.1.452c2 表示第二个文件(2.yml)的第二行与第一个文件(1.yml)的第二行不同。
<表示来自第一个文件的内容。>表示来自第二个文件的内容。3a4 表示在第二个文件(2.yml)中的第三行之后添加了一行,即在第一个文件中不存在的内容。
"c"代表"change"
"a"代表"add"
d (Deleted)
du 查看文件或目录使用空间大小
# du -sh /root/
15G /root/
# 添加通配符则查看目录每一项大小
# du -sh /root/*
4.0K /root/0508
4.0K /root/anaconda-ks.cfg
91M /root/xueback
15G /root/xueback2basename 过滤出路径下面最后的文件名或目录
获取路径最后一级的文件名或目录
# basename /root/0510/1439/1.yml
1.yml
# basename /root/0510/1439/
1439dirname 从文件名中删除最后一个组成部分
# dirname /root/0510/1439/1.yml
/root/0510/1439
# dirname /root/0510/1439/
/root/0510df 查看系统硬盘占用空间情况
df是“disk free”的缩写
# df -Th
Filesystem Type Size Used Avail Use% Mounted on
tmpfs tmpfs 388M 1.7M 386M 1% /run
/dev/sda3 ext4 57G 8.4G 46G 16% /
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock
/dev/sda1 vfat 487M 6.1M 480M 2% /boot/efi
tmpfs tmpfs 388M 76K 387M 1% /run/user/128
tmpfs tmpfs 388M 60K 388M 1% /run/user/0-T选项表示显示文件系统的类型
-h选项则是为了让显示的容量单位
Filesystem: 文件系统挂载点的名称。Type: 文件系统的类型,如ext4,tmpfs,vfat等。Size: 文件系统的总大小。Used: 已使用的空间大小。Avail: 可用的空间大小。Use%: 磁盘使用的百分比。Mounted on: 文件系统挂载的目录路径。
企业真实案例(面试中也会常常被问到)
企业真实案例(面试中也会常常被问到)
无法写入文件提示“no space left on device” 中文:设备上没有剩余空间 用df -Th查看,分区使用空间并没有满,这个时候你会怎么去解决?
提示:Inodes
inode是文件系统中的一个核心概念,每个文件或目录在文件系统中都有一个对应的inode,用于存储与文件相关的信息,如文件的权限、属主、大小、创建和修改时间等元数据,以及文件在磁盘上的实际数据块位置。
ext2, ext3, ext4:默认情况下,inode的数量是基于文件系统的大小计算的
解决步骤:
1.查看inode使用情况
# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/xvda1 1310720 1310720 0 100% /
tmpfs 1007257 1 1007256 1% /dev/shm
/dev/xvdb1 5242880 3395 5239485 1% /logdataFilesystem: 显示的是磁盘分区或挂载点的设备名称或标识。
Inodes: 表示该文件系统总共可以分配的inode数量。
IUsed: 显示当前已使用的inode数量。
IFree: 显示当前未被使用的inode数量。
IUse%: 显示inode的使用百分比,
Mounted on: 显示该文件系统挂载的目录路径。
2.查找目录下小文件数量
可以先查询可能小文件产生多的地方,比如日志文件
du -sh和 find命令配合使用
# du -sh /*
0 /bin
195M /boot
4.0K /cdrom
0 /dev
12M /etc
13M /home
0 /lib
0 /lib32
0 /lib64
0 /libx32
16K /lost+found
4.0K /media
4.0K /mnt
4.0K /opt
du: cannot access '/proc/91148/task/91148/fd/4': No such file or directory
du: cannot access '/proc/91148/task/91148/fdinfo/4': No such file or directory
du: cannot access '/proc/91148/fd/3': No such file or directory
du: cannot access '/proc/91148/fdinfo/3': No such file or directory
0 /proc
21M /root
du: cannot access '/run/user/128/doc': Permission denied
du: cannot access '/run/user/128/gvfs': Permission denied
1.8M /run
0 /sbin
3.1G /snap
4.0K /srv
0 /sys
160K /tmp
5.4G /usr
2.8G /var
- 关于
/proc目录的错误:/proc是一个虚拟文件系统,用于提供关于内核和进程的信息。当你运行du命令时,它尝试遍历/proc中的文件,但因为这些“文件”实际上是动态生成的、代表系统状态和进程信息的接口,并非真实的磁盘文件,所以当某些进程结束或文件描述符不再存在时,会出现 "No such file or directory" 的提示,这是正常现象。- 权限问题: 对于
/run/user/128/doc和/run/user/128/gvfs的访问失败是因为权限不足。这些目录可能包含特定用户会话或运行中的守护进程的数据,普通用户或没有足够权限的用户不能访问。
统计指定目录下的小文件数量
# find /root/ -type f -size -100k|wc -l
35
-size -100k: 这个选项指定了查找的文件大小条件。在这里,-100k表示查找大小小于100KB的文件。
+100M(大于100MB)
=1G(等于1GB)
-表示“小于
3.删除小文件
由于小文件数量过多,直接在此目录下rm是会报错的,这里就用find形式来删除
删除大量文件可能会暂时占用较高的CPU和I/O资源,导致系统响应变慢
find /mnt/log -type f -size -100k | xargs rm -f