码迷,mamicode.com
首页 > 其他好文 > 详细

lsof,fuser命令

时间:2014-09-08 11:01:27      阅读:714      评论:0      收藏:0      [点我收藏+]

标签:命令解释

摘录总结lsof用法:

lsof filename.txt 显示开启文件filename.txt的进程

lsof -i :22 知道22端口现在运行什么程序

lsof -c abc 显示abc进程现在打开的文件

lsof -g gid 显示归属gid的进程情况

lsof +d /usr/local/ 显示目录下被进程开启的文件

lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长

lsof -d 4 显示使用fd为4的进程

lsof -i 用以显示符合条件的进程情况



2 fuser:

 用fuser杀掉进程

一,为什么要使用fuser?
   先说 fuser的作用,fuser能识别出正在对某个文件或端口访问的进程大家想一下,还有哪个命令具备这个功能? 没错,是lsof,我们前面讲过, lsof能够找出正在对指定文件访问的进程,那么它们两者之间有何区别?fuser有一个特别的用法在于它可以一次杀死那些正在访问指定文件的进程。   

二,如何使用fuser?

   1,如何用fuser得到正在使用指定文件的进程?
     用法: fuser 文件
     说明:它会把正在使用当前文件的进程id列出

     [root@localhost lhd]# umount /
     umount: /: device is busy.
           (In some cases useful info about processes that use
            the device is found by lsof(8) or fuser(1))
     [root@localhost lhd]# fuser /
      /:                       1rc     2rc     3rc     4rc     5rc     6rc     7rc    80rc    82rc    84rc    85rc   153rc   157rc   158rc
                               160rc   165rc   168rc  203rc   204rc   205rc   253rc   441rc   444rc   516rc   521rc   524rc   582rc   583rc 
                               584rc   633rc  1052rc  1392rc  1394rc  1417rc  1597rc  1609rc  1617rc  1620rc  1683rc  1744rc  1783r  1785rc
                               1788rc  1806r  1808r  1810rc  1811rc  1812rc  1813rc  1814rc  1815rc  1848rc  1886rc  1899rc  1900rc  2001rc 
                               ......太多不一一列出

      说明:
      这些进程号后面的rc是什么意思?
      
      c 将此文件作为当前目录使用。 
      e 将此文件作为程序的可执行对象使用。

      f 打开的文件。默认不显示

      F 打开的文件,用于写操作。默认不显示。

      m 映射文件或共享库 
      r 将此文件作为根目录使用。 

       s 将此文件作为共享库(或其他可装载对象)使用

常用选项:

  -i:表示交互模式,在杀死进程前会提示,必须和-k合用。

  -l : 列出所有已知的信号。
  -m:指定文件所在的文件系统或块设备(处于mount状态)。所用访问该文件系统的进程都被列出。

  -v

  -u

  -n:常用于指定tcp,udp类型的端口
  2,如何列出进程的详细信息,而不仅仅是进程id?
     用 -v参数即可
     说明: -v:  含义是:verbose output,详细的输出信息
     例子:

     [root@dev ~]# fuser /var/log
     /var/log:             4196c
     [root@dev ~]# fuser -v /var/log
      
                          USER        PID ACCESS COMMAND
     /var/log:            root       4196 ..c.. bash

   3,如何列出进程所属的用户?
     用 -u参数即可
    说明: -u: 含义:display user IDs,显示用户id
     
     例子:
     [root@dev ~]# fuser -u /var/log
     /var/log:             4196c(root)

     4,如何杀死所有正在访问指定文件的进程?
     用 -k参数即可
     说明: -k:含义: kill processes accessing the named file

     例子:

     [root@localhost lhd]# fuser -v /root/install.log
                          用户     进程号 权限   命令
     /root/install.log:   root       3185 f.... tail
     [root@localhost lhd]# fuser -k /root/install.log
     /root/install.log:    3185
     [root@localhost lhd]# fuser -v /root/install.log

     说明: -k参数能够杀死所有的正在访问指定文件的进程,所以用来杀进程时非常方便
     说明之二: fuser如何杀死的进程?
             它发送的是这个信号:SIGKILL

  5.查看哪些程序使用tcp的80端口:

  #fuser -v -n tcp 80

三,多学一点知识

    1,fuser可以列出它所知的信号:
     用 -l参数即可
     例子:
     [root@dev ~]# 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

    2,fuser可以发送它已知的信号给访问的指定文件进程而代替-k参数默认发送的SIGKILL
      例如:只是挂起进程,那么发送HUP信号就可以了
     
      例子:
      [root@localhost lhd]# fuser -v /root/install.log
                           用户     进程号 权限   命令
      /root/install.log:   root       3347 f.... tail
      [root@localhost lhd]# fuser -k -SIGHUP /root/install.log
      /root/install.log:    3347
      [root@localhost lhd]# fuser -v /root/install.log


 



本文出自 “开开心心每一天” 博客,请务必保留此出处http://as007012.blog.51cto.com/6215447/1549808

lsof,fuser命令

标签:命令解释

原文地址:http://as007012.blog.51cto.com/6215447/1549808

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!