整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

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

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

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

日志服务器哪个好用_日志服务sls_日志服务器软件有哪些

2、问题分析

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

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

日志服务器软件有哪些_日志服务器哪个好用_日志服务sls

从上图可以看出有大量库表文件被删除但仍然在数据库中运行占用空间,所以导致出现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

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

文件描述符FD解析:

cwd current working ;

Lnn library (AIX);

jld jail (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 ;

rtd root ;

tr kernel trace file (OpenBSD);

日志服务器哪个好用_日志服务sls_日志服务器软件有哪些

txt program text (code and data);

v86 VP/ix mapped file;

文件的File 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 Xenix lock on part of the file;

X for an SCO 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:表示不解析端口号;

日志服务器软件有哪些_日志服务器哪个好用_日志服务sls

-r:表示指定输出间隔时间;

-s:表示按文件大小过滤;

-T:表示指定输出格式。

3、lsof常见用法举例

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

lsof

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

lsof -p <指定进程pid>

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

lsof -u 

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

lsof 

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

lsof -i :

日志服务器软件有哪些_日志服务sls_日志服务器哪个好用

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

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命令查看完整的帮助文档。