fuser命令

fuser命令用于报告进程使用的文件和网络套接字。fuser命令列出了本地进程的进程号,那些本地进程使用file,参数指定的本地或远程文件。对于阻塞特别设备,此命令列出了使用该设备上任何文件的进程。

每个进程号后面都跟随一个字母,该字母指示进程如何使用文件。

c:指示进程的工作目录。 
e:指示该文件为进程的可执行文件(即进程由该文件拉起)。 
f:指示该文件被进程打开,默认情况下f字符不显示。    
F:指示该文件被进程打开进行写入,默认情况下F字符不显示。 
r:指示该目录为进程的根目录。    
m:指示进程使用该文件进行内存映射,抑或该文件为共享库文件,被进程映射进内存。

常用选项

-a 显示所有命令行中指定的文件,默认情况下被访问的文件才会被显示。 
-c 和-m一样,用于POSIX兼容。 
-k 杀掉访问文件的进程。如果没有指定-signal就会发送SIGKILL信号。结合 –signal

-signal 使用指定的信号,而不是用SIGKILL来杀掉进程。可以通过名称或者号码来表示信号(例如-HUP,-1),这个选项要和-k一起使用,否则会被忽略。

-l 列出所有已知的信号名称。 
-i 杀掉进程之前询问用户,如果没有-k这个选项会被忽略。 
-m name 指定一个挂载文件系统上的文件或者被挂载的块设备(名称name)。这样所有访问这个文件或者文件系统的进程都会被列出来。如果指定的是一个目录会自动转换成"name/",并使用所有挂载在那个目录下面的文件系统。 
-n space 指定一个不同的命名空间(space).这里支持不同的空间文件(文件名,此处默认)、tcp(本地tcp端口)、udp(本地udp端口)。对于端口,可以指定端口号或者名称,如果不会引起歧义那么可以使用简单表示的形式,例如:name/space (即形如:80/tcp之类的表示)。 
-s 静默模式,这时候-u,-v会被忽略。-a不能和-s一起使用。  
-u 在每个PID后面添加进程拥有者的用户名称。 
-v 详细模式。输出似ps命令的输出,包含PID,USER,COMMAND等许多域,如果是内核访问的那么PID为kernel.

案例

无法卸载的设备(device is busy)为 /dev/sdb1

fuser -m -v -k /dev/sdb 
或者 fuser -m -v -k -i  /dev/sdb1(每杀掉一下进程

查看那些程序使用tcp的80端口:

fuser -n tcp 80 

关闭8306端口的进程:

fuser  -k 8306/tcp

或者
kill -9 $(sudo lsof -i tcp:进程号 -t)

推荐阅读更多精彩内容

  • fuser命令小结 linux环境下,当使用umount命令卸载挂载点时,会遇到“device is busy”提...
    禅与计算机程序设计艺术阅读 7,714评论 0 3
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    O感悟人生O阅读 10,433评论 2 33
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 123,389评论 18 134
  • 今天晚上我们去看了电影《寻梦环游记》它是一部很好看的电影,我觉的里面的埃克托最可怜,因为里面的德拉克鲁兹害死了他,...
    YvonneZhu阅读 260评论 2 4
  • 同事写的界面使用循环计算label尺寸,结果在6s上右边出现一条黑色竖线,在5上则不会出现。 看了下代码,这个la...
    kentchen91阅读 2,750评论 3 7
  • 生病了20几天,什么都做不了,一个人会疯吗?
    音盟阅读 49评论 0 0