性能工具之15个常用的Linux文件系统命令

前言
测试人员最常见和繁琐的任务之一就是清理环境,比如防止磁盘空间出现不足。下面是我收集的一些常用的 Linux 文件系统相关命令。
1.检查可用空间
要查找服务器上所有文件系统上的可用空间,请执行以下命令:
$ df -h文件系统 容量 已用 可用 已用% 挂载点/dev/vda1 40G 32G 6.0G 84% /devtmpfs 1.9G 0 1.9G 0% /devtmpfs 1.9G 0 1.9G 0% /dev/shmtmpfs 1.9G 2.0M 1.9G 1% /runtmpfs 1.9G 0 1.9G 0% /sys/fs/cgrouptmpfs 379M 0 379M 0% /run/user/1001tmpfs 379M 0 379M 0% /run/user/1000
对于特定的目录:
$ df -h /home文件系统 容量 已用 可用 已用% 挂载点/dev/vda1 40G 32G 6.0G 84% /
按占用顺序显示文件系统,可以知道的更全面:
~$ df -h | awk "{print $5 " " $6}" | sort -n | tail -522% /23% /home43% /var/datos52% /usr77% /boot
2.计算目录大小
-h 参数以友好的可读方式显示目录大小,以千字节、兆字节、千兆字节为单位
$ du -h -s /var/log76M /var/log
3.清理文件
我们通常使用 rm 命令删除文件以释放空间。但是,我们无法删除文件是非常常见的,因为应用程序当时正在使用该文件,这对于无法停止的压测中系统上的日志文件最为常见。直接删除它们会产生有害影响,例如挂起应用程序,或者更温和但也不合适,因为这些文件的转储数据会被中断并且不再有用。
为了不改变应用程序行为并实现释放磁盘空间的目标,我们将清空文件而不是删除它们:
~# >/var/log/syslog
而后文件将是0字节大小。
如果需要使用单命令一次清空多个文件:
~# for I in`ls "/var/log/*.log"`;do >"$I";done
4.计算目录中的文件数量
$ ls -l /var/log | wc -l
5.文件系统中查找大文件
当你想清理空间的时候,此命令很有用,它会显示目录及子目录中的最大文件
~# du -k /var/log | sort -n | tail -536904 /var/log/audit45780 /var/log/sa4120792 /var/log/journal/f0f31005fb5a436d88e3c6cbf54e25aa4120800 /var/log/journal4207856 /var/log
TIPS:
文件大小必须以千字节(参数
-k)显示,如果参数是-h,sort-n命令不会按列表排序tail-x限制显示文件数,x 是数字,如果目录有数百或数千个文件,此参数就尤为重要了。
6.列出文件系统中最大文件
与上面类似,不过此命令不包括子目录
[root@7dgroup3 log]# ls -lSr | tail -5-rw------- 1 root root 46812012月 1603:20 messages-20181216-rw------- 1 root root 47085312月 203:24 messages-20181202-rw------- 1 root root 47086212月 903:43 messages-20181209-rw------- 1 root root 47653612月 2303:20 messages-20181223-rw------- 1 root root 50008712月 3000:20 messages
如果删除 -r 参数,列出的文件将是最小而不是最大文件。
7.计算指定文件大小
如果想获取指定目录中 .log 文件的总大小:
~$ du -ch /var/log/*.log | grep total20M total
8.查找范围内的大文件
例如,文件大小超过 100MB
~$ find .-type f -size +100M-ls
或者在 100MB 到 1GB之间的那些文件
~$ find .-type f -size +100M-size -1G-ls
9.列出最近修改的文件
~# ls -larth /var/log | tail -5-rw------- 1 root root 5.2K12月3000:14 secure-rw-r--r-- 1 root root 012月3000:14 syslogdrwxr-xr-x.14 root root 4.0K12月3000:14.-rw------- 1 root root 118K12月3000:30 cron-rw------- 1 root root 489K12月3000:30 messages
参数 -a 表示必须显示隐藏文件
10.查找旧文件(一)
很多时候我们需要知道在给定时间间隔内修改的文件。在以下示例中,定位了超过90天的文件,以便找出不再使用的旧文件,可以安全地删除这些文件以释放空间。
〜#find / var / log - mtime +90- ls
〜#find / var / log - mtime +90- ls - exec rm {} ;第一个命令仅定位文件,第二个命令还能删除它们。
11.查找旧文件(二)
与上面相同,另外一种情况,还考虑在指定时间间隔内已访问,修改或未修改的文件。
〜#find / var / log - atime +90- ls
12.查找空文件
以下命令允许你查找当前目录中大小为 0 字节的文件,即空文件。这在生成此文件的异常情况下非常有用,例如在文件系统 100% 已满并且应用程序尝试不成功地写入磁盘或异常应用程序行为之后。在这些情况下,清理是必要的,因为尽管这些空文件不占用磁盘空间,但如果大量创建0字节文件,它们可以使用所有可用的文件系统 inodes,这反过来导致不再创建文件。
~$ find .-type f -size 0b-ls
或者
~$ find .-type f -empty -ls
要了解文件系统中可用的可用 inode 数,请使用 df-i 命令。
~# df -i文件系统 Inode已用(I)可用(I)已用(I)%挂载点/dev/vda1 2621440 7044501916990 27%/devtmpfs 482468 331 482137 1%/devtmpfs 485118 1 485117 1%/dev/shmtmpfs 485118 1041 484077 1%/runtmpfs 485118 16 485102 1%/sys/fs/cgrouptmpfs 485118 1 485117 1%/run/user/1001
13.打包及压缩目录内容
有时将目录中的所有日志文件打包到单个压缩的 tar 文件中以保留给定时间点的该目录的状态,然后安全地删除或清空所有这些文件以释放空间是有用的。
~# tar -zcvf var_log.`date +%Y%m%d`.tar.gz /var/log/*.log
上一个命令将所有日志文件压缩为扩展名为.tar.gz 的单个文件和当天的日期,以便将来容易找到。让我们看看如何节省空间,将此示例从 468 MB压缩到 35 MB:
~# du -ch /var/log/*.log | grep total468M total~# ls -lh var_log.20181230.tar.gz-rw-r--r-- 1 root root 35M sep 3013:36 var_log.20181230.tar.gz
之后,我们可以继续清空所有日志文件,如第3节所述。
14.回收站中查找文件
通常当我们将文件发送到回收站时,它只是移动到主目录中的隐藏文件夹。但是存在一些应用程序使用它们自己的目录来存储垃圾,其名称是大写或小写的单词 trash 的组合,并结合一系列数字,例如 .Trash001, .trash-002 , .Trash_0003 等
此外,当安装来自外部硬盘驱动器或SD卡的文件系统时,回收站的名称可能因操作系统而异,导致无法识别,因此尽管垃圾箱已清空,但设备继续使用大量空间没有明显的理由。
因此,解决方案在于搜索系统中没有大小写差异的所有 * trash *子目录,并分析其内容以查看是否可以删除它(并不总是找到所有找到的项目都是垃圾)。
以下是必需的命令。它的执行可能非常耗时,因此你可能想要输入特定的文件系统或目录:
〜$ find / - iname “* trash *” - ls
15.查找重复文件
最后这是一个巨长的命令,允许你在目录下查找和删除重复文件,以避免不必要的冗余,这在消耗的磁盘空间方面可能非常昂贵。
~$ find -not -empty -type f -printf "%s" | sort -rn | uniq -d | xargs -I{} -n1 find -type f -size {}c -print0 | xargs -0 md5sum | sort | uniq -w32 --all-repeated=separate | cut -f3-100 -d " " | tr "
."" ." | sed "s/ /
/g" | cut -f2-100 | tr " ""
" | perl -i -pe "s/([ (){}-])/\$1/g" | perl -i -pe "s/"""/\"""/g" | xargs -pr rm -v
以上是 性能工具之15个常用的Linux文件系统命令 的全部内容, 来源链接: utcz.com/z/519904.html

