ACCESSfuser 和 lsof

FUSER

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

平,为什么而利用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
将这文件作为次的不过实行对象下。
      r
将以此文件作为根本目录使用。
      s
将此文件作为共享库(或任何可装对象)使用

  
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)
     说明: -n:
含义:获得正访问某个同端口之长河号,然后可以为此kill命令杀死。

     [root@dev ~]#
fuser -un tcp 25
     
25/tcp:             4196(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

老三,多套一些文化

   
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

LSOF

lsof 拥有更多的意义
# lsof -i 看系统遭到起怎么样开放之端口,哪些过程、用户以用它们,比
netstat -lptu 的输出详细。

# lsof -i 4  查看IPv4类型的过程
COMMAND    PID        USER   FD   TYPE DEVICE SIZE NODE NAME
exim4     2213 Debian-exim    4u  IPv4   4844       TCP *:smtp
(LISTEN)
dhclient3 2306        root    4u  IPv4   4555       UDP *:bootpc

# lsof -i 6  查看IPv6类型的进程
COMMAND  PID        USER   FD   TYPE DEVICE SIZE NODE NAME
exim4   2213 Debian-exim    3u  IPv6   4820       TCP *:smtp (LISTEN)

# lsof -i @192.168.1.2  查看和某具体的IP相关联的长河
COMMAND  PID USER   FD   TYPE DEVICE SIZE NODE NAME
amule   3620 root   16u  IPv4  11925       TCP
192.168.1.2:42556->77.247.178.244:4242 (ESTABLISHED)
amule   3620 root   28u  IPv4  11952       TCP
192.168.1.2:49915->118-166-47-24.dynamic.hinet.net:5140
(ESTABLISHED)

# lsof -p 5670 查看PID为5670之进程打开的文书。

相关文章