序言
测试人员最常见和冗长的任务之一就是清除环境,例如避免c盘空间出现不足。下边是我搜集的一些常用的Linux文件系统相关命令。
1.检测可用空间
要查找服务器上所有文件系统上的可用空间,请执行以下命令:
$df-h
文件系统容量已用可用已用%挂载点
/dev/vda140G32G6.0G84%/
devtmpfs1.9G01.9G0%/dev
tmpfs1.9G01.9G0%/dev/shm
tmpfs1.9G2.0M1.9G1%/run
tmpfs1.9G01.9G0%/sys/fs/cgroup
tmpfs379M0379M0%/run/user/1001
tmpfs379M0379M0%/run/user/1000
对于特定的目录:
$df-h/home
文件系统容量已用可用已用%挂载点
/dev/vda140G32G6.0G84%/
按占用次序显示文件系统,可以晓得的更全面:
~$df-h|awk"{print$5""$6}"|sort-n|tail-5
22%/
23%/home
43%/var/datos
52%/usr
77%/boot
2.估算目录大小
-h参数以友好的可读形式显示目录大小linux伊甸园论坛,以千字节、兆字节、千兆字节为单位
$du-h-s/var/log
76M/var/log
3.清除文件
我们一般使用rm命令删掉文件以释放空间。并且,我们没法删掉文件是十分常见的,由于应用程序当时正在使用该文件,这对于未能停止的压测中系统上的日志文件最为常见。直接删掉它们会形成有害影响,比如挂起应用程序,或则更温和但也不合适,由于这种文件的存贮数据会被中断而且不再有用。
为了不改变应用程序行为并实现释放c盘空间的目标,我们将清空文件而不是删掉它们:
~#>/var/log/syslog
而后文件将是0字节大小。
假如须要使用单命令一次清空多个文件:
~#forIin`ls"/var/log/*.log"`;do>"$I";done
4.估算目录中的文件数目
$ls-l/var/log|wc-l
5.文件系统中查找大文件
当你想清除空间的时侯,此命令很有用,它会显示目录及子目录中的最大文件
~#du-k/var/log|sort-n|tail-5
36904/var/log/audit
45780/var/log/sa
4120792/var/log/journal/f0f31005fb5a436d88e3c6cbf54e25aa
4120800/var/log/journal
4207856/var/log
TIPS:
6.列举文件系统中最大文件
与前面类似linux文件系统测试,不过此命令不包括子目录
[root@7dgroup3log]#ls-lSr|tail-5
-rw-------1rootroot46812012月1603:20messages-20181216
-rw-------1rootroot47085312月203:24messages-20181202
-rw-------1rootroot47086212月903:43messages-20181209
-rw-------1rootroot47653612月2303:20messages-20181223
-rw-------1rootroot50008712月3000:20messages
假如删掉-r参数linux文件系统测试,列举的文件将是最小而不是最大文件。
7.估算指定文件大小
假如想获取指定目录中.log文件的总大小:
~$du-ch/var/log/*.log|greptotal
20Mtotal
8.查找范围内的大文件
比如,文件大小超过100MB
~$find.-typef-size+100M-ls
或则在100MB到1GB之间的这些文件
~$find.-typef-size+100M-size-1G-ls
9.列举近来更改的文件
~#ls-larth/var/log|tail-5
-rw-------1rootroot5.2K12月3000:14secure
-rw-r--r--1rootroot012月3000:14syslog
drwxr-xr-x.14rootroot4.0K12月3000:14.
-rw-------1rootroot118K12月3000:30cron
-rw-------1rootroot489K12月3000:30messages
参数-a表示必须显示隐藏文件
10.查找旧文件(一)
好多时侯我们须要晓得在给定时间间隔内更改的文件。在以下示例中,定位了超过90天的文件,便于找出不再使用的旧文件,可以安全地删掉那些文件以释放空间。
〜#find/var/log-mtime+90-ls
〜#find/var/log-mtime+90-ls-execrm{};
第一个命令仅定位文件,第二个命令能够删掉它们。
11.查找旧文件(二)
与前面相同,另外一种情况,还考虑在指定时间间隔内已访问,更改或未更改的文件。
〜#find/var/log-atime+90-ls
12.查找空文件
以下命令容许你查找当前目录中大小为0字节的文件,即空文件。这在生成此文件的异常情况下十分有用,比如在文件系统100%已满但是应用程序尝试不成功地写入c盘或异常应用程序行为然后。在这种情况下,清除是必要的,由于虽然这种空文件不占用c盘空间,但若果大量创建0字节文件,它们可以使用所有可用的文件系统inodes,这反过来造成不再创建文件。
~$find.-typef-size0b-ls
或则
~$find.-typef-empty-ls
要了解文件系统中可用的可用inode数,请使用df-i命令。
~#df-i
文件系统Inode已用(I)可用(I)已用(I)%挂载点
/dev/vda12621440704450191699027%/
devtmpfs4824683314821371%/dev
tmpfs48511814851171%/dev/shm
tmpfs48511810414840771%/run
tmpfs485118164851021%/sys/fs/cgroup
tmpfs48511814851171%/run/user/1001
13.打包及压缩目录内容
有时将目录中的所有日志文件打包到单个压缩的tar文件中以保留给定时间点的该目录的状态,之后安全地删掉或清空所有那些文件以释放空间是有用的。
~#tar-zcvfvar_log.`date+%Y%m%d`.tar.gz/var/log/*.log
上一个命令将所有日志文件压缩为扩充名为.tar.gz的单个文件和当日的日期,便于将来容易找到。让我们瞧瞧怎样节约空间,将此示例从468MB压缩到35MB:
~#du-ch/var/log/*.log|greptotal
468Mtotal
~#ls-lhvar_log.20181230.tar.gz
-rw-r--r--1rootroot35Msep3013:36var_log.20181230.tar.gz
然后,我们可以继续清空所有日志文件,如第3节所述。
14.回收站中查找文件
一般当我们将文件发送到回收站时,它只是联通到主目录中的隐藏文件夹。并且存在一些应用程序使用它们自己的目录来储存垃圾,其名称是小写或大写的词组trash的组合,并结合一系列数字,比如.Trash001,.trash-002,.Trash_0003等
据悉,当安装来自外部硬碟驱动器或SD卡的文件系统时,回收站的名称可能因操作系统而异,致使未能辨识,因而虽然垃圾箱已清空红帽linux,但设备继续使用大量空间没有显著的理由。
因而,解决方案在于搜索系统中没有大小写差别的所有*trash*子目录,并剖析其内容以查看是否可以删掉它(并不总是找到所有找到的项目都是垃圾)。
以下是必需的命令。它的执行可能十分历时,因而你可能想要输入特定的文件系统或目录:
〜$find/-iname“*trash*”-ls
15.查找重复文件
最后这是一个巨长的命令,容许你在目录下查找和删掉重复文件,以防止毋须要的冗余,这在消耗的c盘空间方面可能十分高昂。
~$find-not-empty-typef-printf"%s"|sort-rn|uniq-d|xargs-I{}-n1find-typef-size{}c-print0|xargs-0md5sum|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-prrm-v