文件删除后空间未释放
文件删除后空间未释放
第一步:找到处于delete状态的较大的文件,以及使用进程
lsof |grep -i delete |sort -nrk7 |head |awk 'BEGIN{print "file-size","PID","system"}{print $7/1024/1024"M",$2,$9}' | column -t
删除这个进程,然后重新启动即可,这个是进程占用的磁盘空间
如果是生产环境 无法kill进程的话 可以使用下面的这个方式进行清理 替换你需要清理的 进程号
ls -l /proc/14434/fd
echo "" /proc/14434/fd/1
进行清空 日志信息进行磁盘空间释放
标注
如果删除日志 一定使用 echo “ ” > xxx.log 而不是 rm -f xxx.log 除非 日志没有被进行引用 我之前是 echo "" >> xxx.log 是不会释放空间的 。
linux >> 跟 > 详解
在Linux系统中,>
和 >>
是用于输出重定向的两个操作符,它们的主要区别在于如何处理目标文件的内容:
-
>
(覆盖写): 当你在命令行中使用>
时,你是在指示系统将命令的输出内容写入(或覆盖)到指定的文件中。如果文件已经存在,它的内容将被新的输出完全替换。如果文件不存在,系统将会创建一个新的文件。简而言之,>
会导致目标文件被清空并写入新的内容。 -
>>
(追加写): 相比之下,当你使用>>
时,命令的输出内容会被追加到指定文件的末尾,而不是覆盖现有内容。如果文件已经存在,新的内容会被添加到文件的已有内容之后。如果文件不存在,同样会创建一个新文件。这意味着使用>>
可以累积多次命令的输出结果到同一个文件中。
总结来说,>
用于替换文件内容,而 >>
用于在文件末尾添加内容,保留原有内容不变。在处理日志文件或者需要累加输出结果的场景中,两者的选择取决于是否希望保留原有文件内容。
这个命令链主要用于查找并显示系统中被标记为删除(可能是由于文件正在被删除或者磁盘错误导致的)的文件,并按照文件大小进行排序。
解释各个组件:
lsof:列出系统中打开文件的工具。
grep -i delete:使用grep搜索含有"delete"(不区分大小写)的行。
sort -nrk5:根据第五列(默认是以空格或者Tab分隔的第五列)的数字进行逆序(由大到小)排序。
head:默认显示前10行。
awk 'BEGIN{print "file-size","PI"}':使用awk打印自定义的标题行。
注意:这个命令链假设文件大小是以人类可读的格式(例如以K,M,G为单位)存在于第五列中。如果文件大小是以字节为单位的数字,那么排序将不会正确,需要相应调整sort命令的参数。此外,这个命令链假设每个文件的大小信息是在第五列的,如果不是这样的话,需要调整sort -nrk5中的5为正确的列号。