Linux查看某個文件或目錄是否正在使用


前言:有時候我們想要刪除文件或目錄,但是不知道這個文件或目錄是否正在被使用,被什么進程打開了,進程在做什么操作,在Linux系統下fuser命令是可以幫忙我們查看

fuser功能

fuser 可以顯示出當前哪個程序在使用磁盤上的某個文件、掛載點、甚至網絡端口,並給出程序進程的詳細信息,顯示使用指定文件或者文件系統的進程ID.默認情況下每個文件名后面跟一個字母表示訪問類型。

訪問類型如下:

c 代表當前目錄  
e 將此文件作為程序的可執行對象使用 
f 打開的文件。默認不顯示。  
F 打開的文件,用於寫操作。默認不顯示。  
r 根目錄。  
m 映射文件或者共享庫。 
s 將此文件作為共享庫(或其他可裝載對象)使用

常用選項

-a 顯示所有命令行中指定的文件,默認情況下被訪問的文件才會被顯示。  
-c 和-m一樣,用於POSIX兼容。  
-k 殺掉訪問文件的進程。如果沒有指定-signal就會發送SIGKILL信號。  
-i 殺掉進程之前詢問用戶,如果沒有-k這個選項會被忽略。  
-l 列出所有已知的信號名稱。  
-m name 指定一個掛載文件系統上的文件或者被掛載的塊設備(名稱name)。這樣所有訪問這個文件或者文件系統的進程都會被列出來。如果指定的是一個目錄會自動轉換成"name/",並使用所有掛載在那個目錄下面的文件系統。  
-n space 指定一個不同的命名空間(space).這里支持不同的空間文件(文件名,此處默認)、tcp(本地tcp端口)、udp(本地udp端口)。對於端口, 可以指定端口號或者名稱,如果不會引起歧義那么可以使用簡單表示的形式,例如:name/space (即形如:80/tcp之類的表示)。  
-s 靜默模式,這時候-u,-v會被忽略。-a不能和-s一起使用。  
-signal 使用指定的信號,而不是用SIGKILL來殺掉進程。可以通過名稱或者號碼來表示信號(例如-HUP,-1),這個選項要和-k一起使用,否則會被忽略。  
-u 在每個PID后面添加進程擁有者的用戶名稱。  
-v 詳細模式。輸出似ps命令的輸出,包含PID,USER,COMMAND等許多域,如果是內核訪問的那么PID為kernel.  -V 輸出版本號。  
-4 使用IPV4套接字,不能和-6一起應用,只在-n的tcp和udp的命名存在時不被忽略。  
-6 使用IPV6套接字,不能和-4一起應用,只在-n的tcp和udp的命名存在時不被忽略。  

  

使用例子

查看使用某個文件的進程信息

centos安裝
yum install psmisc

1.查看3306端口正在被誰使用
[root@test 09:41:47 ~]# fuser -v -n tcp 3306
                     USER        PID ACCESS COMMAND
3306/tcp:            mysql      9619 F.... mysqld

說明下:
user就是mysql用戶
pid就是進程ID
access就是訪問的方式,F表示打開的文件,用於寫操作
command就是mysqld

2.查看文件是否正在使用
[root@test09:48:36 ~]# fuser -v test.sh 
                     USER        PID ACCESS COMMAND
/root/test.sh:       root      10462 f.... bash

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM