lsof 需要root权限执行
先执行下面代码供测试:
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());
}
}
#!/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)