Linux服务器 lsof | grep delete 命令解释
2025-02-17合优网祥技术支持540°c
A+ A-命令作用
lsof(List Open Files)会列出系统中所有被进程打开的文件。grep delete用于过滤结果,仅显示已被标记为“已删除”但仍在被进程占用的文件。
使用场景
当文件被删除(如通过 rm 命令),但仍有进程在占用它时,文件实际仍占用磁盘空间(df 显示空间未释放,但 ls 看不到文件)。此命令可定位这类“幽灵文件”。
输出示例
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 1234 alice 1w REG 8,1 100MB 123456 /tmp/log.txt (deleted) nginx 5678 root 3u REG 0,5 200MB 789012 /var/log/nginx/error.log (deleted)
PID:占用文件的进程 ID。
COMMAND:进程名称。
USER:运行进程的用户。
FD:文件描述符(如
1w表示标准输出写入)。NAME:文件路径,末尾的
(deleted)表示文件已被删除但未释放。
如何解决问题?
释放空间:
重启进程:例如
systemctl restart nginx(根据进程名操作)。终止进程:
kill -9 PID(替换PID为实际进程号)。清空文件:如果进程允许,可重定向文件描述符(如
echo "" > /proc/PID/fd/FD)。预防措施:
删除文件前,确保没有进程在写入或读取它。
对日志类文件,使用日志轮转工具(如
logrotate),避免直接rm。
常见案例
日志文件:服务(如 Nginx、Java)持续写入日志文件后,若直接
rm删除,空间不会释放。临时文件:程序运行时创建的临时文件被误删,但进程仍在占用。
123云盘分享
更新时间:2025年02月17日 13:43:57
未定义标签



