Linux服务器上文件已删除但空间没有释放原因说明及命令losf命令解析

您所在的位置:网站首页 删除文件夹后,该文件夹中的文件将会怎样 Linux服务器上文件已删除但空间没有释放原因说明及命令losf命令解析

Linux服务器上文件已删除但空间没有释放原因说明及命令losf命令解析

2024-07-15 03:31| 来源: 网络整理| 查看: 265

一、Linux服务器上文件已删除但空间没有释放原因说明

1、问题说明

查看某台centos6.7日志服务器发现磁盘空间已经达到100%,删除存放日志路径下的文件后,发现空间并未释放。

2、问题分析

在linux或者Unix系统中,通过rm或者文件管理器删除文件将会从文件系统的文件夹结构上解除链接(unlink).然而假设文件是被打开的(有一个进程正在使用),那么进程将仍然能够读取该文件,磁盘空间也一直被占用。

通过命令lsof查看是否有已删除文件占用空间(lsof +L1或lsof | grep delete)。 

从上图可以看出有大量库表文件被删除但仍然在数据库中运行占用空间 ,所以导致出现rm删除文件但磁盘空间未得到释放的情况,SIZE列为文件占用的空间大小。

3、解决方法 

根据上图可以看出啊占用已删除文件的进程是数据库,可以重启数据库MySQL来释放进程,也可以重启服务器。

如遇到 Apache、Tomcat、Nginx 等 Web 服务产生的日志文件,无法在生产环境上重启,可以选择在线清空日志的方法 echo " " >路径+日志名

二、lsof命令解析 

lsof全名list opened files,也就是列举系统中已经被打开的文件。在linux环境中,都是以文件形式存放的,设备是文件,文件夹是文件,甚至sockets也是文件。所以,用好lsof命令,它可以显示系统中所有打开的文件,包括网络连接、管道、设备、目录和普通文件等,对日常的linux管理非常有帮助。

基础命令格式:lsof [options] [names] 

1、命令输出字段解析 

lsof是linux最常使用的命令之中的一个,通常的输出格式为:

COMMAND     PID   USER   FD      TYPE     DEVICE     SIZE       NODE  NAME

常见包含例如以下几个字段:

COMMAND:进程的名称PID:进程标识符USER:进程所有者FD:文件描述符,cwd、txt、err等TYPE:文件类型,例如REG(常规)、DIR(目录)、CHR(字符设备)等DEVICE:设备编号SIZE/OFF:文件大小或节点,假设不能用大小表示的,会留空,使用-s參数控制NODE:索引节点NAME:文件路径名,挂载点和文件的全路径(链接会被解析为实际路径),或者连接两方的地址和端口、状态等

文件描述符FD解析:

cwd  current working directory; Lnn  library references (AIX); jld  jail directory (FreeBSD); ltx  shared library text (code and data); Mxx  hex memory-mapped type number xx. m86  DOS Merge mapped file; mem  memory-mapped file; mmap memory-mapped device; pd   parent directory; rtd  root directory; tr   kernel trace file (OpenBSD); txt  program text (code and data); v86  VP/ix mapped file;

文件的File Descriptor number显示模式有: r for read access; w for write access; u for read and write access; N for a Solaris NFS lock of unknown type; r for read lock on part of the file; R for a read lock on the entire file; w for a write lock on part of the file; W for a write lock on the entire file; u for a read and write lock of any length; U for a lock of unknown type; x for an SCO OpenServer Xenix lock on part  of the file; X  for an SCO OpenServer Xenix lock on the entire file; space if there is no lock.

2、常用的lsof命令选项 

下面是一些常用的lsof命令选项:

-a:表示逻辑与,用于指定多个过滤条件之间的关系;

-b:不重新读取已打开文件的信息,防止系统阻塞;

-c:表示按进程名过滤; -d:表示按文件描述符过滤;

-D :搜索某个目录下被打开的文件

-g:表示按组ID过滤; -i:表示按网络连接过滤; -p:表示按进程ID过滤; -u:表示按用户ID过滤; -t:表示只输出进程ID; -F:表示指定输出格式; -h:表示不显示列名; -n:表示不解析主机名; -P:表示不解析端口号; -r:表示指定输出间隔时间; -s:表示按文件大小过滤; -T:表示指定输出格式。

3、lsof常见用法举例

要列出所有打开的文件,可以使用以下命令:

lsof

要列出指定进程打开的文件,可以使用以下命令:

lsof -p

要列出指定用户打开的文件,可以使用以下命令:

lsof -u

要列出指定文件名的进程,可以使用以下命令:

lsof

要列出指定端口号的进程,可以使用以下命令:

lsof -i :

要列出指定目录下打开的文件,可以使用以下命令:

lsof

要列出删除但磁盘空间未释放的文件,可以使用以下命令:

lsof | grep delete lsof +L1

要列出某个进程打开的文件,可以使用以下命令:

lsof -c 进程名

要列出按照文件夹/home/oracle来搜寻,但不会打开子文件夹,用来显示文件夹下被进程开启的文件,可以使用以下命令:

lsof +d /home/oracle COMMAND  PID   USER   FD   TYPE DEVICE SIZE     NODE NAME tnslsnr 3520 oracle  cwd    DIR  253,5 4096 11059201 /home/oracle

要列出打开/home/oracle文件夹以及其子文件夹搜寻,用来显示文件夹下被进程开启的文件 ,可以使用以下命令:

lsof +D /home/oracle

除了以上常用的选项外,lsof还支持很多其他的选项,可以通过man lsof命令查看完整的帮助文档。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3