Blog / 阅读

每天进步一点点- lsof 命令查找指定用户、进程、端口打开的文件

by admin on 2014-03-17 11:31:15 in ,



 lsof 需要root权限执行
先执行下面代码供测试:
[java] view plaincopyprint?
public class TestSleep {  
  
        public static void main(String[] args) {  
                System.out.println("being sleep"+new Date().toLocaleString());  
                try  
                {  
                Runtime rt = Runtime.getRuntime();  
                Process proc = rt.exec("/home/boco/script/sleep.sh");  
                InputStream stdin = proc.getInputStream();  
                InputStreamReader isr = new InputStreamReader(stdin);  
                BufferedReader br = new BufferedReader(isr);  
                String line = null;  
                System.out.println("<output></output>");  
                while ( (line = br.readLine()) != null)  
                System.out.println(line);  
                System.out.println("");  
                int exitVal = proc.waitFor();  
                System.out.println("Process exitValue: " + exitVal);  
                } catch (Throwable t)  
                {  
                t.printStackTrace();  
                }  
  
                System.out.println("end sleep"+new Date().toLocaleString());  
        }  
}  


 
[plain] view plaincopyprint?
#!/bin/bash  
#/home/boco/script/sleep.sh  
echo "begin"  
sleep 1000  
echo "end"  


 
1、查找所有打开的文件
[root@redhat5 ~]# lsof | head
COMMAND    PID      USER   FD      TYPE     DEVICE     SIZE       NODE NAME
init         1      root  cwd       DIR        8,3     4096          2 /
init         1      root  rtd       DIR        8,3     4096          2 /
init         1      root  txt       REG        8,3    38652    4484999 /sbin/ini


t
init         1      root  mem       REG        8,3   125736     492620 /lib/ld-2


.5.so
init         1      root  mem       REG        8,3  1611564     492621 /lib/libc


-2.5.so
init         1      root  mem       REG        8,3    16428     492622 /lib/libd


l-2.5.so
init         1      root  mem       REG        8,3    93508     492636 /lib/libs


elinux.so.1
init         1      root  mem       REG        8,3   245376     492635 /lib/libs


epol.so.1
init         1      root   10u     FIFO       0,17                1506 /dev/init


ctl




  
 
FD - File descriptor
FD 列包含这样一些值
cwd - Current working directory
txt - Text file
mem - Memory Mapped file
mmap - Memory Mapped device
Number - It represent the actual file descriptor. For example, 0u, 1w and 3r
r 是读的意思,w 是写,u 代表读写 
Type 代表文件类型,例如:
>REG - Regular file 
>DIR - Directory
>CHR - Character special file
>FIFO - First in first out 
2、查找用户打开的文件
[root@redhat5 ~]# lsof -u boco
COMMAND   PID USER   FD   TYPE DEVICE     SIZE    NODE NAME
bash     3599 boco  cwd    DIR    8,3     4096  752939 /home/boco/script
bash     3599 boco  rtd    DIR    8,3     4096       2 /
bash     3599 boco  txt    REG    8,3   735004 3306367 /bin/bash
bash     3599 boco  mem    REG    8,3   125736  492620 /lib/ld-2.5.so
bash     3599 boco  mem    REG    8,3  1611564  492621 /lib/libc-2.5.so
bash     3599 boco  mem    REG    8,3    16428  492622 /lib/libdl-2.5.so
bash     3599 boco  mem    REG    8,3    13276  492642 /lib/libtermcap.so.2.0.8
bash     3599 boco  mem    REG    8,3    46680  491080 /lib/libnss_files-2.5.so
bash     3599 boco  mem    REG    8,3    25462 2588743 /usr/lib/gconv/gconv-modu
les.cache
bash     3599 boco  mem    REG    8,3 56452288 2492259 /usr/lib/locale/locale-ar
chive
bash     3599 boco    0u   CHR  136,0                2 /dev/pts/0
bash     3599 boco    1u   CHR  136,0                2 /dev/pts/0
bash     3599 boco    2u   CHR  136,0                2 /dev/pts/0
bash     3599 boco  255u   CHR  136,0                2 /dev/pts/0
java     3707 boco  cwd    DIR    8,3     4096  752939 /home/boco/script
java     3707 boco  rtd    DIR    8,3     4096       2 /
java     3707 boco  txt    REG    8,3    47308 3404707 /usr/local/jdk1.6.0_45/bi
n/java
java     3707 boco  mem    REG    8,3   125736  492620 /lib/ld-2.5.so
java     3707 boco  mem    REG    8,3  1611564  492621 /lib/libc-2.5.so
java     3707 boco  mem    REG    8,3   208352  492627 /lib/libm-2.5.so
java     3707 boco  mem    REG    8,3    16428  492622 /lib/libdl-2.5.so
java     3707 boco  mem    REG    8,3   129716  492623 /lib/libpthread-2.5.so
java     3707 boco  mem    REG    8,3    44060  492624 /lib/librt-2.5.so
java     3707 boco  mem    REG    8,3   101404  492632 /lib/libnsl-2.5.so
java     3707 boco  mem    REG    8,3 15032320 3178121 /usr/local/jdk1.6.0_45/jr
e/lib/i386/client/classes.jsa
java     3707 boco  mem    REG    8,3 52557932 2983708 /usr/local/jdk1.6.0_45/jr
e/lib/rt.jar
java     3707 boco  mem    REG    8,3    77119 3114849 /usr/local/jdk1.6.0_45/jr
e/lib/i386/libzip.so
java     3707 boco  mem    REG    8,3    46680  491080 /lib/libnss_files-2.5.so
java     3707 boco  mem    REG    8,3    32768  327367 /tmp/hsperfdata_boco/3707
java     3707 boco  mem    REG    8,3   189222 3114847 /usr/local/jdk1.6.0_45/jr
e/lib/i386/libjava.so
java     3707 boco  mem    REG    8,3  6450682 3178118 /usr/local/jdk1.6.0_45/jr
e/lib/i386/client/libjvm.so
java     3707 boco  mem    REG    8,3    38142 3277888 /usr/local/jdk1.6.0_45/jr
e/lib/i386/jli/libjli.so
java     3707 boco  mem    REG    8,3    56701 3114846 /usr/local/jdk1.6.0_45/jr
e/lib/i386/libverify.so
java     3707 boco    0u   CHR  136,0                2 /dev/pts/0
java     3707 boco    1u   CHR  136,0                2 /dev/pts/0
java     3707 boco    2u   CHR  136,0                2 /dev/pts/0
java     3707 boco    3r   REG    8,3 52557932 2983708 /usr/local/jdk1.6.0_45/jr
e/lib/rt.jar
java     3707 boco    5w  FIFO    0,6            15657 pipe
java     3707 boco    6r  FIFO    0,6            15658 pipe
java     3707 boco    8r  FIFO    0,6            15659 pipe
sleep.sh 3717 boco  cwd    DIR    8,3     4096  752939 /home/boco/script
sleep.sh 3717 boco  rtd    DIR    8,3     4096       2 /
sleep.sh 3717 boco  txt    REG    8,3   735004 3306367 /bin/bash
sleep.sh 3717 boco  mem    REG    8,3   125736  492620 /lib/ld-2.5.so
sleep.sh 3717 boco  mem    REG    8,3  1611564  492621 /lib/libc-2.5.so
sleep.sh 3717 boco  mem    REG    8,3    16428  492622 /lib/libdl-2.5.so
sleep.sh 3717 boco  mem    REG    8,3    13276  492642 /lib/libtermcap.so.2.0.8
sleep.sh 3717 boco    0r  FIFO    0,6            15657 pipe
sleep.sh 3717 boco    1w  FIFO    0,6            15658 pipe
sleep.sh 3717 boco    2w  FIFO    0,6            15659 pipe
sleep.sh 3717 boco  255r   REG    8,3       47  752964 /home/boco/script/sleep.s
h
sleep    3718 boco  cwd    DIR    8,3     4096  752939 /home/boco/script
sleep    3718 boco  rtd    DIR    8,3     4096       2 /
sleep    3718 boco  txt    REG    8,3    19564 3306437 /bin/sleep
sleep    3718 boco  mem    REG    8,3   125736  492620 /lib/ld-2.5.so
sleep    3718 boco  mem    REG    8,3  1611564  492621 /lib/libc-2.5.so
sleep    3718 boco    0r  FIFO    0,6            15657 pipe
sleep    3718 boco    1w  FIFO    0,6            15658 pipe
sleep    3718 boco    2w  FIFO    0,6            15659 pipe
  
 
 3、 列出在某个端口运行的进程
[root@redhat5 ~]# lsof -i:23
COMMAND  PID USER   FD   TYPE DEVICE SIZE NODE NAME
xinetd  3309 root    5u  IPv4  12942       TCP *:telnet (LISTEN)
telnetd 3597 root    0u  IPv4  14212       TCP localhost:telnet->localhost:49887


 (ESTABLISHED)
telnetd 3597 root    1u  IPv4  14212       TCP localhost:telnet->localhost:49887


 (ESTABLISHED)
telnetd 3597 root    2u  IPv4  14212       TCP localhost:telnet->localhost:49887


 (ESTABLISHED)
[root@redhat5 ~]# lsof -i:22
COMMAND  PID USER   FD   TYPE DEVICE SIZE NODE NAME
sshd    3257 root    3u  IPv6  12673       TCP *:ssh (LISTEN)
 4、 列出端口在 22-23 之间的所有进程
[root@redhat5 ~]# lsof -i:22-23
COMMAND  PID USER   FD   TYPE DEVICE SIZE NODE NAME
sshd    3257 root    3u  IPv6  12673       TCP *:ssh (LISTEN)
xinetd  3309 root    5u  IPv4  12942       TCP *:telnet (LISTEN)
telnetd 3597 root    0u  IPv4  14212       TCP localhost:telnet->localhost:49887


 (ESTABLISHED)
telnetd 3597 root    1u  IPv4  14212       TCP localhost:telnet->localhost:49887


 (ESTABLISHED)
telnetd 3597 root    2u  IPv4  14212       TCP localhost:telnet->localhost:49887


 (ESTABLISHED)
 
 5、只列出使用 IPv4 的打开文件
[root@redhat5 ~]# lsof -i 4
COMMAND    PID  USER   FD   TYPE DEVICE SIZE NODE NAME
dhclient  2747  root    4u  IPv4   9709       UDP *:bootpc
portmap   2876   rpc    3u  IPv4  10060       UDP *:sunrpc
portmap   2876   rpc    4u  IPv4  10061       TCP *:sunrpc (LISTEN)
rpc.statd 2916  root    3u  IPv4  10196       UDP *:975
rpc.statd 2916  root    6u  IPv4  10183       UDP *:972
rpc.statd 2916  root    7u  IPv4  10209       TCP *:978 (LISTEN)
hpiod     3220  root    0u  IPv4  12562       TCP redhat5.4-baby:2208 (LISTEN)
python    3225  root    4u  IPv4  12582       TCP redhat5.4-baby:2207 (LISTEN)
cupsd     3272  root    4u  IPv4  12754       TCP redhat5.4-baby:ipp (LISTEN)
cupsd     3272  root    6u  IPv4  12757       UDP *:ipp
xinetd    3309  root    5u  IPv4  12942       TCP *:telnet (LISTEN)
sendmail  3333  root    4u  IPv4  12940       TCP redhat5.4-baby:smtp (LISTEN)
avahi-dae 3467 avahi   13u  IPv4  13585       UDP *:mdns
avahi-dae 3467 avahi   15u  IPv4  13587       UDP *:36306
telnetd   3597  root    0u  IPv4  14212       TCP localhost:telnet->localhost:49


887 (ESTABLISHED)
telnetd   3597  root    1u  IPv4  14212       TCP localhost:telnet->localhost:49


887 (ESTABLISHED)
telnetd   3597  root    2u  IPv4  14212       TCP localhost:telnet->localhost:49


887 (ESTABLISHED)
 6、只列出使用 IPv6 的打开文件
[root@redhat5 ~]# lsof -i 6
COMMAND    PID  USER   FD   TYPE DEVICE SIZE NODE NAME
sshd      3257  root    3u  IPv6  12673       TCP *:ssh (LISTEN)
avahi-dae 3467 avahi   14u  IPv6  13586       UDP *:mdns
avahi-dae 3467 avahi   16u  IPv6  13588       UDP *:38402
 7、根据进程pid列出打开的文件
[root@redhat5 ~]# lsof -p 3707
COMMAND  PID USER   FD   TYPE DEVICE     SIZE    NODE NAME
java    3707 boco  cwd    DIR    8,3     4096  752939 /home/boco/script
java    3707 boco  rtd    DIR    8,3     4096       2 /
java    3707 boco  txt    REG    8,3    47308 3404707 /usr/local/jdk1.6.0_45/bin


/java
java    3707 boco  mem    REG    8,3   125736  492620 /lib/ld-2.5.so
java    3707 boco  mem    REG    8,3  1611564  492621 /lib/libc-2.5.so
java    3707 boco  mem    REG    8,3   208352  492627 /lib/libm-2.5.so
java    3707 boco  mem    REG    8,3    16428  492622 /lib/libdl-2.5.so
java    3707 boco  mem    REG    8,3   129716  492623 /lib/libpthread-2.5.so
java    3707 boco  mem    REG    8,3    44060  492624 /lib/librt-2.5.so
java    3707 boco  mem    REG    8,3   101404  492632 /lib/libnsl-2.5.so
java    3707 boco  mem    REG    8,3 15032320 3178121 /usr/local/jdk1.6.0_45/jre


/lib/i386/client/classes.jsa
java    3707 boco  mem    REG    8,3 52557932 2983708 /usr/local/jdk1.6.0_45/jre


/lib/rt.jar
java    3707 boco  mem    REG    8,3    77119 3114849 /usr/local/jdk1.6.0_45/jre


/lib/i386/libzip.so
java    3707 boco  mem    REG    8,3    46680  491080 /lib/libnss_files-2.5.so
java    3707 boco  mem    REG    8,3    32768  327367 /tmp/hsperfdata_boco/3707
java    3707 boco  mem    REG    8,3   189222 3114847 /usr/local/jdk1.6.0_45/jre


/lib/i386/libjava.so
java    3707 boco  mem    REG    8,3  6450682 3178118 /usr/local/jdk1.6.0_45/jre


/lib/i386/client/libjvm.so
java    3707 boco  mem    REG    8,3    38142 3277888 /usr/local/jdk1.6.0_45/jre


/lib/i386/jli/libjli.so
java    3707 boco  mem    REG    8,3    56701 3114846 /usr/local/jdk1.6.0_45/jre


/lib/i386/libverify.so
java    3707 boco    0u   CHR  136,0                2 /dev/pts/0
java    3707 boco    1u   CHR  136,0                2 /dev/pts/0
java    3707 boco    2u   CHR  136,0                2 /dev/pts/0
java    3707 boco    3r   REG    8,3 52557932 2983708 /usr/local/jdk1.6.0_45/jre


/lib/rt.jar
java    3707 boco    5w  FIFO    0,6            15657 pipe
java    3707 boco    6r  FIFO    0,6            15658 pipe
java    3707 boco    8r  FIFO    0,6            15659 pipe
 8、根据进程名称列出打开的文件
[root@redhat5 ~]# lsof -c java
COMMAND  PID USER   FD   TYPE DEVICE     SIZE    NODE NAME
java    3707 boco  cwd    DIR    8,3     4096  752939 /home/boco/script
java    3707 boco  rtd    DIR    8,3     4096       2 /
java    3707 boco  txt    REG    8,3    47308 3404707 /usr/local/jdk1.6.0_45/bin


/java
java    3707 boco  mem    REG    8,3   125736  492620 /lib/ld-2.5.so
java    3707 boco  mem    REG    8,3  1611564  492621 /lib/libc-2.5.so
java    3707 boco  mem    REG    8,3   208352  492627 /lib/libm-2.5.so
java    3707 boco  mem    REG    8,3    16428  492622 /lib/libdl-2.5.so
java    3707 boco  mem    REG    8,3   129716  492623 /lib/libpthread-2.5.so
java    3707 boco  mem    REG    8,3    44060  492624 /lib/librt-2.5.so
java    3707 boco  mem    REG    8,3   101404  492632 /lib/libnsl-2.5.so
java    3707 boco  mem    REG    8,3 15032320 3178121 /usr/local/jdk1.6.0_45/jre


/lib/i386/client/classes.jsa
java    3707 boco  mem    REG    8,3 52557932 2983708 /usr/local/jdk1.6.0_45/jre


/lib/rt.jar
java    3707 boco  mem    REG    8,3    77119 3114849 /usr/local/jdk1.6.0_45/jre


/lib/i386/libzip.so
java    3707 boco  mem    REG    8,3    46680  491080 /lib/libnss_files-2.5.so
java    3707 boco  mem    REG    8,3    32768  327367 /tmp/hsperfdata_boco/3707
java    3707 boco  mem    REG    8,3   189222 3114847 /usr/local/jdk1.6.0_45/jre


/lib/i386/libjava.so
java    3707 boco  mem    REG    8,3  6450682 3178118 /usr/local/jdk1.6.0_45/jre


/lib/i386/client/libjvm.so
java    3707 boco  mem    REG    8,3    38142 3277888 /usr/local/jdk1.6.0_45/jre


/lib/i386/jli/libjli.so
java    3707 boco  mem    REG    8,3    56701 3114846 /usr/local/jdk1.6.0_45/jre


/lib/i386/libverify.so
java    3707 boco    0u   CHR  136,0                2 /dev/pts/0
java    3707 boco    1u   CHR  136,0                2 /dev/pts/0
java    3707 boco    2u   CHR  136,0                2 /dev/pts/0
java    3707 boco    3r   REG    8,3 52557932 2983708 /usr/local/jdk1.6.0_45/jre


/lib/rt.jar
java    3707 boco    5w  FIFO    0,6            15657 pipe
java    3707 boco    6r  FIFO    0,6            15658 pipe
java    3707 boco    8r  FIFO    0,6            15659 pipe
[root@redhat5 ~]#
[root@redhat5 ~]# lsof | grep TestSleep
[root@redhat5 ~]# jps
3707 TestSleep
3798 Jps
 9、只显示pid
[root@redhat5 ~]# lsof -t -u boco
3599
3707
3717
3718
 10、列出所有侦听和已建立的网络连接
[root@redhat5 ~]# lsof -i
COMMAND    PID  USER   FD   TYPE DEVICE SIZE NODE NAME
dhclient  2747  root    4u  IPv4   9709       UDP *:bootpc
portmap   2876   rpc    3u  IPv4  10060       UDP *:sunrpc
portmap   2876   rpc    4u  IPv4  10061       TCP *:sunrpc (LISTEN)
rpc.statd 2916  root    3u  IPv4  10196       UDP *:975
rpc.statd 2916  root    6u  IPv4  10183       UDP *:972
rpc.statd 2916  root    7u  IPv4  10209       TCP *:978 (LISTEN)
hpiod     3220  root    0u  IPv4  12562       TCP redhat5.4-baby:2208 (LISTEN)
python    3225  root    4u  IPv4  12582       TCP redhat5.4-baby:2207 (LISTEN)
sshd      3257  root    3u  IPv6  12673       TCP *:ssh (LISTEN)
cupsd     3272  root    4u  IPv4  12754       TCP redhat5.4-baby:ipp (LISTEN)
cupsd     3272  root    6u  IPv4  12757       UDP *:ipp
xinetd    3309  root    5u  IPv4  12942       TCP *:telnet (LISTEN)
sendmail  3333  root    4u  IPv4  12940       TCP redhat5.4-baby:smtp (LISTEN)
avahi-dae 3467 avahi   13u  IPv4  13585       UDP *:mdns
avahi-dae 3467 avahi   14u  IPv6  13586       UDP *:mdns
avahi-dae 3467 avahi   15u  IPv4  13587       UDP *:36306
avahi-dae 3467 avahi   16u  IPv6  13588       UDP *:38402
telnetd   3597  root    0u  IPv4  14212       TCP localhost:telnet->localhost:49


887 (ESTABLISHED)
telnetd   3597  root    1u  IPv4  14212       TCP localhost:telnet->localhost:49


887 (ESTABLISHED)
telnetd   3597  root    2u  IPv4  14212       TCP localhost:telnet->localhost:49


887 (ESTABLISHED)



写评论

相关文章

上一篇:linux下的进程等待(wait和waitpid)

下一篇:单路CPU性能排名

评论

写评论

* 必填.

分享

栏目

赞助商


热门文章

Tag 云