[英]How find out which process is using a file in Linux?
我嘗試使用rm -rf file_name
刪除 Linux 中的文件,但出現錯誤:
rm: file_name not removed. Text file busy
我怎樣才能找出哪個進程正在使用這個文件?
您可以使用fuser
命令,例如:
fuser file_name
您將收到使用該文件的進程列表。
您可以使用不同的標志,以便獲得更詳細的輸出。
您可以在fuser 的 Wikipedia 文章或man
頁中找到更多信息。
@jim 的回答是正確的—— fuser
就是你想要的。
此外(或替代地),您可以使用lsof
獲取更多信息,包括用戶名,以防您需要許可(無需運行其他命令)來終止進程。 (當然,如果您想要終止進程, fuser
可以使用它的-k
選項來做到這一點。您可以讓fuser
使用帶有-s
選項的其他信號——查看手冊頁了解詳細信息。)
例如,在一個窗口中運行tail -F /etc/passwd
:
ghoti@pc:~$ lsof | grep passwd
tail 12470 ghoti 3r REG 251,0 2037 51515911 /etc/passwd
請注意,您還可以使用lsof
來找出哪些進程正在使用特定的套接字。 您的武器庫中的絕佳工具。
對於沒有fuser的用戶:
雖然我們可以使用lsof ,但還有另一種方法,即我們可以查詢/proc文件系統本身,它列出了所有進程的所有打開文件。
# ls -l /proc/*/fd/* | grep filename
樣本output如下:
l-wx------。 1 root root 64 Aug 15 02:56 /proc/5026/fd/4 -> /var/log/filename.log
從 output,可以使用ps等實用程序中的進程 ID 來查找程序名稱
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.