linux 查看某文件是否正在使用(被读写)

fuser功能 
fuser 可以显示出当前哪个程序在使用磁盘上的某个文件、挂载点、甚至网络端口,并给出程序进程的详细信息.  
fuser显示使用指定文件或者文件系统的进程ID.默认情况下每个文件名后面跟一个字母表示访问类型。  
访问类型如下:  
c 代表当前目录  
e 将此文件作为程序的可执行对象使用 
f 打开的文件。默认不显示。  
F 打开的文件,用于写操作。默认不显示。  
r 根目录。  
m 映射文件或者共享库。

s 将此文件作为共享库(或其他可装载对象)使用
当指定的文件没有被访问,或者出现错误的时候,fuser会返回非零。  
为了查看使用tcp和udp套接字的进程,需要-n选项并指定名称空间。默认IpV4和IpV6都会显示。套接字可以是本地的或者是远程的端口,和远程的地址。所有的域是可选的,但是其前面的‘,‘必须存在。如下:  
[lcl_port][,[rmt_host][,[rmt_port]]]  
对于ip地址和port,名称和数字表示都可以使用。  
fuser只把PID输出到标准输出,其他的都输出到标准错误输出。  
常用选项 
-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的命名存在时不被忽略。  
- 重置所有的选项,把信号设置为SIGKILL.  
使用示例

显示使用某个文件的进程信息 
$ fuser -um /dev/sda2  
/dev/sda2:            6378c(quietheart)  6534c(quietheart)  6628(quietheart)  
6653c(quietheart)  7429c(quietheart)  7549c(quietheart)  7608c(quietheart)  
这个命令在umount的时候很有用,可以找到还有哪些用到这个设备了。  
杀掉打开readme文件的程序

$fuser -m -k -i readme  
这里,会在kill之前询问是否确定。最好加上-v以便知道将要杀那个进程。  
查看那些程序使用tcp的80端口 
$fuser -v -n tcp 80  

$fuser -v 80/tcp  
fuser不同信号的应用 
用 -l参数可以列出fuser所知的信号
# fuser -l
HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM
STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS
UNUSED
fuser可以发送它已知的信号给访问的指定文件进程而代替-k参数默认发送的SIGKILL,例如:只是挂起进程,那么发送HUP信号就可以了
# fuser -v /root/install.log
                      用户     进程号 权限   命令
 /root/install.log:   root       3347 f.... tail
 # fuser -k -SIGHUP /root/install.log
 /root/install.log:    3347
# fuser -v /root/install.log

参考至:http://hi.baidu.com/bossyt/item/020e2cddf09463ee3cc2cb1a
              http://wenku.baidu.com/view/7e42df3667ec102de2bd8927.html
              http://blog.sina.com.cn/s/blog_59af21260100tv1m.html

本文转自:http://czmmiao.iteye.com/blog/1733722 感谢原作者分享

时间: 2024-10-27 16:59:06

linux 查看某文件是否正在使用(被读写)的相关文章

Linux查看一个文件夹大小

1.Linux查看一个文件夹大小: du -sh /home/yangkun [[email protected] bin]$ du -sh /home/yangkun/ 164M /home/yangkun/ 2.Linux查看某个目录下所有文件的大小:du -h /home/yangkun [[email protected] bin]$ du -h /home/yangkun/ 4.0K /home/yangkun/.config/abrt 8.0K /home/yangkun/.conf

linux查看日志文件内容命令tail、cat、tac、head、echo详解

linux查看日志文件内容命令tail.cat.tac.head.echo tail -f test.log你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, ---------------------------linux 如何显示一个文件的某几行(中间几行) 从第3000行开始,显示1000行.即显示3000~3999行cat filename | tail -n +3000 | head -n 1000 显示1000行到3000行cat filename| head -

[转]linux查看日志文件内容命令

linux查看日志文件内容命令tail.cat.tac.head.echo tail -f test.log你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, ---------------------------linux 如何显示一个文件的某几行(中间几行) 从第3000行开始,显示1000行.即显示3000~3999行cat filename | tail -n +3000 | head -n 1000 显示1000行到3000行cat filename| head -

linux查看日志文件内容命令tail、cat、tac、head、echo

tail -f test.log你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, ---------------------------linux 如何显示一个文件的某几行(中间几行) 从第3000行开始,显示1000行.即显示3000~3999行cat filename | tail -n +3000 | head -n 1000 显示1000行到3000行cat filename| head -n 3000 | tail -n +1000 *注意两种方法的顺序分解:ta

linux查看日志文件

var/log/wtmp文件记录着用户的登陆时间和ip地址,使用who命令可以查看 who var/log/wtmp 显示如下 其中pts代表登陆的终端编号,从0开始,gpadmin账号在11:01分在第四个终端登陆的情况,也就是说gpadmin账号同时有4人在使用 第一个终端pts/0 第二个终端pts/1 依次类推 var/log/lastlog 记录最后一次用户成功登录的时间.登录ip等信息 cat var/log/lastlog /var/log/messages 记录linux操作系统

linux查看安装文件

rpm -qa jdk 查看名字包含"jdk"的已安装的文件 which java 查看java命令的所在目录 rpm -qf `which java` 查看java命令所对应的安装文件 namei /usr/bin/java 查看java命令链接的真实路径 rpm -qf 真实路径/java 查看java命令所对应的安装文件

linux查看当前文件夹的大小

1.(方法一)ls -lht会列出当前目录下每个文件的大小,同时也会给出当前目录下所有文件大小总和 [查看谬个文件的大小,] 2.(方法二)du -sh *也会列出当前文件夹下所有文件对应的大小 [把*替换为具体的文件名,会给出具体文件的大小] 原文地址:https://www.cnblogs.com/pansidong/p/9683012.html

linux 查看查找文件命令整理

1.查找特定字符的上下文 grep -A 2 -B 1 'str' file 2.查看cat more less tail head cat:命令可以一次显示整个文件,如果文件比较大,使用不是很方便:more:命令可以让屏幕在显示满一屏幕时暂停,按空格往前翻页,按b往后翻页.less:命令也可以分页显示文件,和more命令的区别就在于: 支持上下键卷动屏幕.查找. 不需要在一开始就读取整个文件,打开大文件时比more.vim更快.head:命令用于查看文件的前n行.tail:命令用于查看文件的后

linux怎么查看一个文件夹的大小

linux查看一个文件夹的大小的命令为: du --max-depth 1 -lh 该文件夹的完整路径 例,查询/var文件夹的大小: du --max-depth 1 -lh /var du 递归查询该路径下所有文件的大小(若不加任何参数,则显示文件夹内的所有文件,包括文件夹内子文件夹的内容). 命令解释: 参数 --max-depth 1 -lh 设置递归深度为1,及不查询子文件夹.因而使用此参数只显示该文件夹的大小,不显示其中子文件夹的大小. 注意: 视操作系统版本不同,命令可能为: du