成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

深入解析:用 lsof 揪出“幽靈文件”釋放磁盤空間

運維
“幽靈文件”雖不常見,但一旦出現就很容易造成磁盤空間莫名減少。掌握 lsof,不僅能迅速定位問題,更能為你節省大量排查時間。

日常運維中,你是否遇到過這樣的情況:明明已經刪除了大文件,但磁盤空間卻遲遲未釋放?du 顯示沒問題,df 卻提示磁盤快滿?這背后可能隱藏著一種“幽靈文件”現象。本文將帶你深入了解問題根源,并借助 lsof 工具快速定位并解決這類疑難問題。

什么是“幽靈文件”?

“幽靈文件”(又叫 deleted but open files)是指已經被從文件系統中刪除,但依然被某些進程打開著的文件。它們不再出現在目錄結構中,但因為被進程持有,它們的空間不會被釋放。

?? 舉個例子:你運行了一個程序,它在寫一個日志文件 audit.log。某天你為了節省空間直接刪除了 audit.log,但這個程序并沒有關閉文件句柄,導致這部分空間仍然被占用。

[root@s-zb-dba02 mnt]# lsof +L1 | grep deleted
auditd    6134   root    4w   REG  253,0155446270995536 /var/log/audit/audit.log (deleted)
.....

問題表現

使用 df -h 看到根目錄快滿:

[root@s-zb-dba02 mnt]# df -h
文件系統                 容量  已用  可用 已用% 掛載點
devtmpfs                 252G     0  252G    0% /dev
tmpfs                    252G  771M  252G    1% /dev/shm
tmpfs                    252G   14G  239G    6% /run
tmpfs                    252G     0  252G    0% /sys/fs/cgroup
/dev/mapper/rhel-root     42G   41G  1.2G   98% /
....

而 du -sh /* 卻發現加起來沒這么多空間:

du-sh /*
8G /var
1G /home
...
總計加起來遠遠小于 42G

這就說明:有空間被“非文件系統中的文件”占用了,也就是“幽靈文件”!

lsof 是什么?

lsof(List Open Files)是 Linux 系統的核心診斷工具,它能列出所有進程打開的文件資源。在 Linux哲學中"一切皆文件"的背景下,lsof 可查看的不僅是常規文件,還包括:

  • 網絡套接字(TCP/UDP)
  • 管道(PIPE)和 FIFO
  • 共享內存
  • 設備文件
  • 被刪除但仍被進程占用的文件

基礎用法速查:

# 查看指定進程打開的文件
$ lsof-p<PID>

# 查看指定用戶打開的文件
$ lsof-u<username>

# 查看指定目錄下被打開的文件
$ lsof +D /path/to/dir

# 查看指定文件系統的打開文件(推薦排查磁盤空間問題)
$ lsof +aL1 <mount-point>

關鍵參數解析:

  • +a:AND條件組合
  • +L1:僅顯示鏈接數小于1的文件(即被刪除的文件)
  • +aL1:組合條件查找已刪除但被占用的文件

如何用 lsof 揪出“幽靈文件”?

你只需要一條命令,就能找到這些占用磁盤空間的“幽靈文件”:

lsof +L1 |grep deleted

示例輸出:

COMMAND   PID    USER    FD   TYPE DEVICE     SIZE/OFF NLINK     NODE NAME
auditd    6134   root    4w   REG  253,0155446270995536 /var/log/audit/audit.log (deleted)
tuned     7696   root    3w   REG  253,054912034451806 /var/log/tuned/tuned.log (deleted)
rsyslogd  7700   root    5w   REG  253,0391297111920101454061 /var/log/messages-20250310 (deleted)
rsyslogd  7700   root    6w   REG  253,0391297111920101454061 /var/log/messages-20250310 (deleted)
rsyslogd  7700   root    7w   REG  253,0391297111920101454061 /var/log/messages-20250310 (deleted)
rsyslogd  7700   root    8w   REG  253,0391297111920101454061 /var/log/messages-20250310 (deleted)

字段解釋:

  • COMMAND:哪個進程
  • PID:進程 ID
  • FILE:文件類型(txt、mem、del等)
  • SIZE:文件大小
  • NAME:文件路徑(顯示 deleted)

如何解決?

(1) 方法一:重啟進程(推薦)

找到對應的 PID,使用如下命令結束它:

kill-91234

或者優雅重啟進程(推薦):

systemctl restart auditd

注意:重啟服務前請確保不影響業務運行!

(2) 方法二:使用 truncate 清空文件

若不能重啟,可以通過 proc 文件系統,清空該文件句柄:

truncate -s0 /proc/6134/fd/4

其中 6134 是 PID,4 是對應的文件描述符,可在 lsof 結果中找到。

預防措施

  • 程序中使用日志輪轉(logrotate)+ 信號通知關閉舊句柄。
  • 日志定期清理時,建議使用 truncate 而不是 rm。
  • 定期巡檢系統中被刪除但仍然打開的文件:
lsof|grep deleted

小結

“幽靈文件”雖不常見,但一旦出現就很容易造成磁盤空間莫名減少。掌握 lsof,不僅能迅速定位問題,更能為你節省大量排查時間。

記住:刪除不等于釋放,進程還在引用,就還占空間!

責任編輯:趙寧寧 來源: 攻城獅成長日記
相關推薦

2023-03-05 22:11:20

刪除文件磁盤

2022-11-06 19:34:53

UbuntuLinux

2019-11-20 10:24:43

Linux重復文件磁盤

2019-11-20 10:23:51

磁盤WindowsLinux

2020-01-10 16:00:16

Windows 10更新磁盤空間

2023-03-03 00:07:24

2010-04-08 15:24:36

Windows磁盤空間

2021-08-30 07:53:54

Linuxncdu磁盤

2020-04-09 16:29:40

Windows 10系統更新微軟

2011-01-18 10:25:19

Linux磁盤分區

2023-04-18 23:31:59

Linux磁盤系統

2010-05-27 17:51:55

Linux查看磁盤空間

2022-08-07 12:17:21

Snap磁盤

2021-02-11 08:11:50

Window10Docker容器

2020-07-09 09:55:12

diskonautLinux導航器

2024-11-28 13:16:47

Linux磁盤

2010-06-17 15:01:24

Linux查看磁盤空間

2018-07-24 08:50:40

Linux磁盤空間磁盤利用率

2020-05-12 09:02:29

Linux磁盤硬盤

2018-01-11 15:36:23

命令磁盤空間Docker
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: chinese中国真实乱对白 | 久久不卡区 | 日韩中文一区二区 | 99re6在线| 欧美视频在线一区 | 午夜激情在线视频 | 亚洲精品成人在线 | 久久久久久久久淑女av国产精品 | 成人水多啪啪片 | 91社影院在线观看 | 日韩精品免费在线 | 天天操夜夜操 | 美女视频三区 | 亚洲网址在线观看 | 亚洲成人一区 | 亚洲欧美视频一区二区 | 国产成人精品a视频一区www | 欧美日韩国产三级 | 亚洲精品乱 | 亚洲伊人a | 亚洲视频一区二区三区 | 中文字幕视频在线观看 | 国产精品不卡 | a免费视频 | 色婷婷久久久久swag精品 | a黄毛片 | 亚洲一区二区三区四区五区中文 | 亚洲一区二区日韩 | 欧美日韩不卡合集视频 | 亚洲中国字幕 | 色天堂影院 | 四虎永久影院 | 99国产精品久久久久 | 国产欧美一区二区三区在线看 | 国产欧美一区二区三区在线看 | av高清毛片 | 天天插天天操 | 日韩精品久久一区 | 国产精品色 | 国产第一区二区 | 羞羞在线视频 |