lsof -p 怎麼辦pidbestallingwhenls/proc/p一世db和s噸一個ll一世nG在H和nls/pr○C/pid be stalling when ls /proc/pid/fd 是不是?
我有一種情況,我觀察到特定主機的 BackupPC 停止。該主機執行 Debian 10(並安裝了例如 Docker)。
在這種情況下,兩個
rsync
相關的程序正在該主機上執行(父程序sudo /usr/bin/rsync --server ...
和子程序/usr/bin/rsync --server ...
)。當我試圖通過發出來找出rsync
目前正在處理的文件(即它停止的位置)時lsof -p $child_pid
,它也會停止(即它顯然永遠不會返回但可以停止,例如使用 Ctrl-C)。ls /proc/$child_pid/fs
同時工作正常(並且只返回 4 個 fds)。
rsync
因此,也許這接近停滯的根本原因。怎麼會lsof -p
是停滯的情況。什麼時候ls /proc/$child_pid/fd
不是?它不應該總是(幾乎)立即得到答案嗎?我怎樣才能進一步診斷這種情況(以及然後解決它)?更新我現在正在檢查
ext4
該主機上的文件系統中的碎片。這也需要很長時間…time e4defrag -v -c $(df -t ext4 | tail -n +2 | awk '{print $1}')
更新現在看起來好像
e4defrag -v -c
卡住了;它的最後一個輸出是"/media/cdrom0" File is not regular file
. 主機實際上是一個 Proxmox VM,所以問題可能與它的虛擬 CD-ROM 有關嗎?不過這似乎不太可能,因為表明df /media/cdrom0
它已安裝在. 可能(大小 23G)非常分散,以至於長時間的持續時間是正常的,或者可能會遇到一些限制。/``e4defrag``/var``/var``e4defrag
最後,這看起來與“孤立”文件有關,這些文件顯然源於在無法訪問 NFS 伺服器時將 NFS 掛載到容器中。一旦我辨識並刪除了那些 (
e4defrag
and)lsof
就不再停滯不前,即再次按預期行事。