<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post//</link>
<title><![CDATA[（转） linux管道与套接字的调试工具]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Unix/LinuxC技术]]></category>
<pubDate>Tue, 03 Feb 2015 01:17:53 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	背景：多进程时用管道进行子进程间或子进程于线程之间通讯，出现父进程已经双close后还是出现了当有请求来时，子进程写入处理线程时管道阻塞住了，怎么办，管道调试试试看了，学习备忘下。<br/><br/>1)管道的调试<br/><br/>/proc/pid/fd目录下列出进程的管道和管道的索引号.<br/><br/>我们用下面的程序来看管道在/proc/pid/fd目录下的表现,如下:<br/><br/>#include&lt;unistd.h&gt;<br/>#include&lt;sys/types.h&gt;<br/>#include&lt;stdio.h&gt;<br/>#include&lt;stdlib.h&gt;<br/>#include&lt;string.h&gt;<br/>int main()<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pid_t pid;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int fd[2],nbytes;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char string[]=&quot;data from child process&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char buf[100];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(pipe(fd)&lt;0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;perror(&quot;pipe&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((pid=fork())==-1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;perror(&quot;fork&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(pid==0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close(fd[0]);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;childpid =%2d&#92;n&quot;,getpid());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write(fd[1],string,sizeof(string));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close(fd[1]);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(0);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;parentpid =%2d&#92;n&quot;,getpid());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep(30);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close(fd[1]);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nbytes=read(fd[0],buf,sizeof(buf));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;Received string:%s&#92;n&quot;,buf);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close(fd[0]);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<br/>&#125;<br/><br/>编译:<br/>gcc pipe.c -o pipe <br/><br/>运行:<br/>./pipe <br/>childpid =27695<br/>parentpid = 27694<br/><br/>程序会在父进程执行时调用sleep(30),此时子进程已经完成对管道的写入,并关闭了子进程的管道(读/写两端).<br/>父进程在sleep(30)秒后,从管道读取信息并输出.<br/><br/>我们在父进程睡眠的时候,根据它的parentpid输出,来查看它的文件描述符,如下:<br/><br/>ls -l /proc/27694/fd<br/>total 0<br/>lrwx------ 1 root root 64 Mar 18 13:06 0 -&gt; /dev/pts/0<br/>lrwx------ 1 root root 64 Mar 18 13:06 1 -&gt; /dev/pts/0<br/>lrwx------ 1 root root 64 Mar 18 13:06 2 -&gt; /dev/pts/0<br/>lr-x------ 1 root root 64 Mar 18 13:06 3 -&gt; pipe:[42753]<br/>l-wx------ 1 root root 64 Mar 18 13:06 4 -&gt; pipe:[42753]<br/><br/>这里的3 -&gt; pipe:[42753],表示管道的读取端,4 -&gt; pipe:[42753]表示管道的写入端.<br/><br/>相同我们也可以根据管道的索引号得到它的进程,如下:<br/>lsof &#124;head -1 &amp;&amp; lsof &#124; grep 43046<br/>COMMAND&nbsp;&nbsp;&nbsp;&nbsp; PID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;USER&nbsp;&nbsp; FD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TYPE&nbsp;&nbsp;&nbsp;&nbsp; DEVICE&nbsp;&nbsp;&nbsp;&nbsp; SIZE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NODE NAME<br/>pipe&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;27780&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;&nbsp;&nbsp;&nbsp;3r&nbsp;&nbsp;&nbsp;&nbsp; FIFO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 43046 pipe<br/>pipe&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;27780&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;&nbsp;&nbsp;&nbsp;4w&nbsp;&nbsp;&nbsp;&nbsp; FIFO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 43046 pipe<br/><br/><br/>———————————————实践开始—————————————————<br/>自己实践如下，主进程没有管道，因为关闭了：<br/>[root@test multepoolserver]# ls -l&nbsp;&nbsp;/proc/32651/fd/<br/>total 0<br/>lrwx------ 1 root root 64 Feb&nbsp;&nbsp;3 09:37 0 -&gt; /dev/pts/7<br/>lrwx------ 1 root root 64 Feb&nbsp;&nbsp;3 09:37 1 -&gt; /dev/pts/7<br/>lrwx------ 1 root root 64 Feb&nbsp;&nbsp;3 09:36 2 -&gt; /dev/pts/7<br/>lrwx------ 1 root root 64 Feb&nbsp;&nbsp;3 09:37 5 -&gt; socket:[1020446723]<br/><br/>看下子进程，先起一个，pid号32652：<br/>[root@test multepoolserver]# ls -l&nbsp;&nbsp;/proc/32652/fd/<br/>total 0<br/>lrwx------ 1 root root 64 Feb&nbsp;&nbsp;3 09:38 0 -&gt; /dev/pts/7<br/>lrwx------ 1 root root 64 Feb&nbsp;&nbsp;3 09:38 1 -&gt; /dev/pts/7<br/>lrwx------ 1 root root 64 Feb&nbsp;&nbsp;3 09:36 2 -&gt; /dev/pts/7<br/>lrwx------ 1 root root 64 Feb&nbsp;&nbsp;3 09:38 5 -&gt; socket:[1020446723]<br/>lr-x------ 1 root root 64 Feb&nbsp;&nbsp;3 09:38 6 -&gt; eventpoll:[1020446725]<br/><br/>有的可能没有*.sock，可用其它的看：<br/>法一）netstat -nlxp<br/><br/>法二）cat /proc/net/unix<br/><br/>法三）/proc/PID号/fd/<br/><br/>法四）lsof /tmp/localsock&nbsp;&nbsp;&nbsp;&nbsp; <br/>lsof /tmp/mysqld.sock<br/>COMMAND&nbsp;&nbsp; PID&nbsp;&nbsp;USER&nbsp;&nbsp; FD&nbsp;&nbsp; TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DEVICE SIZE&nbsp;&nbsp;&nbsp;&nbsp; NODE NAME<br/>mysqld&nbsp;&nbsp;15066 mysql&nbsp;&nbsp; 20u&nbsp;&nbsp;unix 0xffff8100b983a8c0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;87854212 /tmp/mysqld.sock<br/><br/>法五）lsof -i tcp -a -p 32651<br/>lsof -i tcp -a -p 32651<br/>COMMAND&nbsp;&nbsp;&nbsp;&nbsp; PID USER&nbsp;&nbsp; FD&nbsp;&nbsp; TYPE&nbsp;&nbsp;&nbsp;&nbsp; DEVICE SIZE NODE NAME<br/>multipepo 32651 root&nbsp;&nbsp;&nbsp;&nbsp;5u&nbsp;&nbsp;IPv4 1020446723&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP *:webcache (LISTEN)<br/><br/>总之，对于管道,可以在/proc/pid/fd和lsof -p pid的方式来查看INODE。<br/>—————————————实践结束—————————————————<br/><br/>2)套接字的调试<br/><br/>调试套接字时两个最有用的工具是netstat和lsof<br/><br/>#include &lt;stdio.h&gt;<br/>#include &lt;string.h&gt;<br/>#include &lt;signal.h&gt;<br/>#include &lt;stdlib.h&gt;<br/>#include &lt;unistd.h&gt;<br/>#include &lt;sys/types.h&gt;<br/>#include &lt;sys/socket.h&gt;<br/>#include &lt;sys/un.h&gt;<br/>#define ASSERTNOERR(x, msg) do&#123;&#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ((x) == -1)&#123;perror(msg); exit(1);&#125;&#125;while(0)<br/>#define SOCKNAME &quot;localsock&quot;<br/>int main (int argc, char *argv[])<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int s = socket(PF_LOCAL, SOCK_STREAM, 0);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struct sockaddr_un sa = &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.sun_family = AF_LOCAL,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.sun_path = SOCKNAME<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int r = bind(s, (struct sockaddr *) &amp;sa, sizeof(sa));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ASSERTNOERR(r, &quot;bind&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r = listen(s, 0);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ASSERTNOERR(r, &quot;listen&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struct sockaddr_un asa;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size_t addrlen = sizeof(asa);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int fd = accept(s, (struct sockaddr *) &amp;asa, &amp;addrlen);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ASSERTNOERR(fd, &quot;accept&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(1)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char buf[32];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fd_set fds;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FD_ZERO(&amp;fds);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FD_SET(fd, &amp;fds);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int r = select (fd+1, &amp;fds, NULL, NULL, NULL);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ASSERTNOERR(r, &quot;select&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int n = read(fd, buf, sizeof(buf));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;server read %d bytes&#92;n&quot;, n);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(n == 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unlink(SOCKNAME);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<br/>&#125;<br/><br/>编译:<br/>gcc unix-socket.c -o unix-socket<br/><br/>用netstat来查看处于监听状态的UNIX socket套接字,如下:<br/>netstat -nlxp<br/>Active UNIX domain sockets (only servers)<br/>Proto RefCnt Flags&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; State&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I-Node PID/Program name&nbsp;&nbsp;&nbsp;&nbsp;Path<br/>unix&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ ACC ]&nbsp;&nbsp;&nbsp;&nbsp; STREAM&nbsp;&nbsp;&nbsp;&nbsp; LISTENING&nbsp;&nbsp;&nbsp;&nbsp; 4899&nbsp;&nbsp; 1967/sdpd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /var/run/sdp<br/>unix&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ ACC ]&nbsp;&nbsp;&nbsp;&nbsp; STREAM&nbsp;&nbsp;&nbsp;&nbsp; LISTENING&nbsp;&nbsp;&nbsp;&nbsp; 5534&nbsp;&nbsp; 2260/xfs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/tmp/.font-unix/fs7100<br/>unix&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ ACC ]&nbsp;&nbsp;&nbsp;&nbsp; STREAM&nbsp;&nbsp;&nbsp;&nbsp; LISTENING&nbsp;&nbsp;&nbsp;&nbsp; 6586&nbsp;&nbsp; 2468/1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/tmp/ssh-yWORhw2468/agent.2468<br/>unix&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ ACC ]&nbsp;&nbsp;&nbsp;&nbsp; STREAM&nbsp;&nbsp;&nbsp;&nbsp; LISTENING&nbsp;&nbsp;&nbsp;&nbsp; 8331&nbsp;&nbsp; 2879/unix-socket&nbsp;&nbsp;&nbsp;&nbsp;/tmp/localsock<br/>unix&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ ACC ]&nbsp;&nbsp;&nbsp;&nbsp; STREAM&nbsp;&nbsp;&nbsp;&nbsp; LISTENING&nbsp;&nbsp;&nbsp;&nbsp; 4988&nbsp;&nbsp; 2030/pcscd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/var/run/pcscd.comm<br/>unix&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ ACC ]&nbsp;&nbsp;&nbsp;&nbsp; STREAM&nbsp;&nbsp;&nbsp;&nbsp; LISTENING&nbsp;&nbsp;&nbsp;&nbsp; 5151&nbsp;&nbsp; 2103/acpid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/var/run/acpid.socket<br/>unix&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ ACC ]&nbsp;&nbsp;&nbsp;&nbsp; STREAM&nbsp;&nbsp;&nbsp;&nbsp; LISTENING&nbsp;&nbsp;&nbsp;&nbsp; 5412&nbsp;&nbsp; 2206/gpm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/dev/gpmctl<br/>unix&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ ACC ]&nbsp;&nbsp;&nbsp;&nbsp; STREAM&nbsp;&nbsp;&nbsp;&nbsp; LISTENING&nbsp;&nbsp;&nbsp;&nbsp; 5631&nbsp;&nbsp; 2311/avahi-daemon:&nbsp;&nbsp;/var/run/avahi-daemon/socket<br/>unix&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ ACC ]&nbsp;&nbsp;&nbsp;&nbsp; STREAM&nbsp;&nbsp;&nbsp;&nbsp; LISTENING&nbsp;&nbsp;&nbsp;&nbsp; 5257&nbsp;&nbsp; 2141/cupsd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/var/run/cups/cups.sock<br/>unix&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ ACC ]&nbsp;&nbsp;&nbsp;&nbsp; STREAM&nbsp;&nbsp;&nbsp;&nbsp; LISTENING&nbsp;&nbsp;&nbsp;&nbsp; 5677&nbsp;&nbsp; 2328/hald&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @/var/run/hald/dbus-gzDLkbe0vz<br/>unix&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ ACC ]&nbsp;&nbsp;&nbsp;&nbsp; STREAM&nbsp;&nbsp;&nbsp;&nbsp; LISTENING&nbsp;&nbsp;&nbsp;&nbsp; 5678&nbsp;&nbsp; 2328/hald&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @/var/run/hald/dbus-y2AFY83XQF<br/>unix&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ ACC ]&nbsp;&nbsp;&nbsp;&nbsp; STREAM&nbsp;&nbsp;&nbsp;&nbsp; LISTENING&nbsp;&nbsp;&nbsp;&nbsp; 4424&nbsp;&nbsp; 1755/python&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /var/run/audit_events<br/>unix&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ ACC ]&nbsp;&nbsp;&nbsp;&nbsp; STREAM&nbsp;&nbsp;&nbsp;&nbsp; LISTENING&nbsp;&nbsp;&nbsp;&nbsp; 4810&nbsp;&nbsp; 1941/dbus-daemon&nbsp;&nbsp;&nbsp;&nbsp;/var/run/dbus/system_bus_socket<br/><br/>我们看到unix-socket程序产生的socket文件,如下:<br/>unix&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ ACC ]&nbsp;&nbsp;&nbsp;&nbsp; STREAM&nbsp;&nbsp;&nbsp;&nbsp; LISTENING&nbsp;&nbsp;&nbsp;&nbsp; 8331&nbsp;&nbsp; 2879/unix-socket&nbsp;&nbsp;&nbsp;&nbsp;/tmp/localsock<br/><br/>ACC:表示这个unix socket程序调用ACCEPT函数,处于接收的状态.<br/>SOCK_STREAM:表示这个unix socket是可靠的基于连接的数据传输,基本协议保证了按照传输的顺序读取信息.<br/>I-NODE:表示套接字的索引号,就像一个文件.<br/><br/>通过查看/proc/net/unix,也可以看到unix套接字的信息.<br/>cat /proc/net/unix<br/>Num&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RefCount Protocol Flags&nbsp;&nbsp;&nbsp;&nbsp;Type St Inode Path<br/>d3341040: 00000002 00000000 00010000 0001 01&nbsp;&nbsp;4899 /var/run/sdp<br/>d2893c80: 00000002 00000000 00010000 0001 01&nbsp;&nbsp;5534 /tmp/.font-unix/fs7100<br/>d32dac80: 00000002 00000000 00010000 0001 01&nbsp;&nbsp;6586 /tmp/ssh-yWORhw2468/agent.2468<br/>d32da3c0: 00000002 00000000 00010000 0001 01&nbsp;&nbsp;8331 /tmp/localsock<br/>db380c80: 00000002 00000000 00010000 0001 01&nbsp;&nbsp;4988 /var/run/pcscd.comm<br/>db380900: 00000002 00000000 00010000 0001 01&nbsp;&nbsp;5151 /var/run/acpid.socket<br/>db380040: 00000002 00000000 00010000 0001 01&nbsp;&nbsp;5412 /dev/gpmctl<br/>d2893200: 00000002 00000000 00010000 0001 01&nbsp;&nbsp;5631 /var/run/avahi-daemon/socket<br/>db380580: 00000002 00000000 00010000 0001 01&nbsp;&nbsp;5257 /var/run/cups/cups.sock<br/>dfcf4900: 00000012 00000000 00000000 0002 01&nbsp;&nbsp;4416 /dev/log<br/>dfcf4e40: 00000002 00000000 00000000 0002 01&nbsp;&nbsp;1081 @/org/kernel/udev/udevd<br/>d1029580: 00000002 00000000 00000000 0002 01&nbsp;&nbsp;5686 @/org/freedesktop/hal/udev_event<br/>d1029c80: 00000002 00000000 00010000 0001 01&nbsp;&nbsp;5677 @/var/run/hald/dbus-gzDLkbe0vz<br/>d1029ac0: 00000002 00000000 00010000 0001 01&nbsp;&nbsp;5678 @/var/run/hald/dbus-y2AFY83XQF<br/>dfcf4580: 00000002 00000000 00010000 0001 01&nbsp;&nbsp;4424 /var/run/audit_events<br/>d3341c80: 00000002 00000000 00010000 0001 01&nbsp;&nbsp;4810 /var/run/dbus/system_bus_socket<br/><br/>可以通过lsof来查看unix套接字信息,如下:<br/><br/>netstat -xnpl&#124;grep localsock<br/>unix&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ ACC ]&nbsp;&nbsp;&nbsp;&nbsp; STREAM&nbsp;&nbsp;&nbsp;&nbsp; LISTENING&nbsp;&nbsp;&nbsp;&nbsp; 8331&nbsp;&nbsp; 2879/unix-socket&nbsp;&nbsp;&nbsp;&nbsp;/tmp/localsock<br/><br/>lsof /tmp/localsock&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>COMMAND&nbsp;&nbsp;&nbsp;&nbsp;PID USER&nbsp;&nbsp; FD&nbsp;&nbsp; TYPE&nbsp;&nbsp;&nbsp;&nbsp; DEVICE SIZE NODE NAME<br/>unix-sock 2879 root&nbsp;&nbsp;&nbsp;&nbsp;3u&nbsp;&nbsp;unix 0xd32da3c0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8331 /tmp/localsock<br/><br/>在这里我们可以看用户ID,文件描述符.<br/><br/>可以通过查看/proc/8331/fd/,来看文件描述的信息,如下:<br/>ls -l /proc/2879/fd<br/>total 0<br/>lrwx------ 1 root root 64 Mar 19 01:32 0 -&gt; /dev/pts/0<br/>lrwx------ 1 root root 64 Mar 19 01:32 1 -&gt; /dev/pts/0<br/>lrwx------ 1 root root 64 Mar 19 01:32 2 -&gt; /dev/pts/0<br/>lrwx------ 1 root root 64 Mar 19 01:32 3 -&gt; socket:[8331]<br/><br/>对于tcp/udp的SOCKET套接字,如下:<br/><br/>查看tcp的SOCKET套接字:<br/>netstat -tanp<br/>Active Internet connections (servers and established)<br/>Proto Recv-Q Send-Q Local Address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Foreign Address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; State&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PID/Program name&nbsp;&nbsp; <br/>tcp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 127.0.0.1:2208&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.0.0.0:*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LISTEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2119/hpiod&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>tcp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 0.0.0.0:779&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0:*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LISTEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1869/rpc.statd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>tcp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 0.0.0.0:111&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0:*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LISTEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1830/portmap&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>tcp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 0.0.0.0:23&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.0.0.0:*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LISTEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2177/xinetd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>tcp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 127.0.0.1:631&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0:*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LISTEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2141/cupsd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>tcp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 127.0.0.1:2207&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.0.0.0:*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LISTEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2124/python&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>tcp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 :::22&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :::*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LISTEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2160/sshd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>tcp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 ::1:631&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :::*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LISTEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2141/cupsd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>tcp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;148 ::ffff:192.168.27.130:22&nbsp;&nbsp;&nbsp;&nbsp;::ffff:192.168.27.1:2892&nbsp;&nbsp;&nbsp;&nbsp;ESTABLISHED 2468/2 <br/><br/>查看udp的SOCKET套接字:<br/>netstat -uanp<br/>Active Internet connections (servers and established)<br/>Proto Recv-Q Send-Q Local Address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Foreign Address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; State&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PID/Program name&nbsp;&nbsp; <br/>udp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 0.0.0.0:32768&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0:*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2311/avahi-daemon:&nbsp;&nbsp;<br/>udp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 0.0.0.0:773&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0:*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1869/rpc.statd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>udp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 0.0.0.0:776&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0:*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1869/rpc.statd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>udp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 0.0.0.0:68&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.0.0.0:*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1548/dhclient&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>udp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 0.0.0.0:5353&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.0.0.0:*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2311/avahi-daemon:&nbsp;&nbsp;<br/>udp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 0.0.0.0:111&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0:*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1830/portmap&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>udp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 0.0.0.0:631&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0:*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2141/cupsd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>udp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 :::32769&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:::*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2311/avahi-daemon:&nbsp;&nbsp;<br/>udp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 :::5353&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :::*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2311/avahi-daemon:&nbsp;&nbsp;<br/><br/>通过lsof来查看tcp的信息.<br/>lsof -n -i tcp<br/>COMMAND&nbsp;&nbsp;&nbsp;&nbsp;PID USER&nbsp;&nbsp; FD&nbsp;&nbsp; TYPE DEVICE SIZE NODE NAME<br/>portmap&nbsp;&nbsp; 1830&nbsp;&nbsp;rpc&nbsp;&nbsp;&nbsp;&nbsp;4u&nbsp;&nbsp;IPv4&nbsp;&nbsp; 4533&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP *:sunrpc (LISTEN)<br/>rpc.statd 1869 root&nbsp;&nbsp;&nbsp;&nbsp;7u&nbsp;&nbsp;IPv4&nbsp;&nbsp; 4615&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP *:779 (LISTEN)<br/>hpiod&nbsp;&nbsp;&nbsp;&nbsp; 2119 root&nbsp;&nbsp;&nbsp;&nbsp;0u&nbsp;&nbsp;IPv4&nbsp;&nbsp; 5185&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP 127.0.0.1:2208 (LISTEN)<br/>python&nbsp;&nbsp;&nbsp;&nbsp;2124 root&nbsp;&nbsp;&nbsp;&nbsp;4u&nbsp;&nbsp;IPv4&nbsp;&nbsp; 5201&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP 127.0.0.1:2207 (LISTEN)<br/>cupsd&nbsp;&nbsp;&nbsp;&nbsp; 2141 root&nbsp;&nbsp;&nbsp;&nbsp;3u&nbsp;&nbsp;IPv6&nbsp;&nbsp; 5255&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP [::1]:ipp (LISTEN)<br/>cupsd&nbsp;&nbsp;&nbsp;&nbsp; 2141 root&nbsp;&nbsp;&nbsp;&nbsp;4u&nbsp;&nbsp;IPv4&nbsp;&nbsp; 5256&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP 127.0.0.1:ipp (LISTEN)<br/>sshd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2160 root&nbsp;&nbsp;&nbsp;&nbsp;3u&nbsp;&nbsp;IPv6&nbsp;&nbsp; 5303&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP *:ssh (LISTEN)<br/>xinetd&nbsp;&nbsp;&nbsp;&nbsp;2177 root&nbsp;&nbsp;&nbsp;&nbsp;5u&nbsp;&nbsp;IPv4&nbsp;&nbsp; 5416&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP *:telnet (LISTEN)<br/>sshd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2468 root&nbsp;&nbsp;&nbsp;&nbsp;3u&nbsp;&nbsp;IPv6&nbsp;&nbsp; 6547&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP 192.168.27.130:ssh-&gt;192.168.27.1:snifferdata (ESTABLISHED)<br/><br/>通过lsof来查看udp的信息.<br/>lsof -n -i udp<br/>COMMAND&nbsp;&nbsp;&nbsp;&nbsp;PID&nbsp;&nbsp;USER&nbsp;&nbsp; FD&nbsp;&nbsp; TYPE DEVICE SIZE NODE NAME<br/>dhclient&nbsp;&nbsp;1548&nbsp;&nbsp;root&nbsp;&nbsp;&nbsp;&nbsp;4u&nbsp;&nbsp;IPv4&nbsp;&nbsp; 4027&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UDP *:bootpc <br/>portmap&nbsp;&nbsp; 1830&nbsp;&nbsp; rpc&nbsp;&nbsp;&nbsp;&nbsp;3u&nbsp;&nbsp;IPv4&nbsp;&nbsp; 4532&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UDP *:sunrpc <br/>rpc.statd 1869&nbsp;&nbsp;root&nbsp;&nbsp;&nbsp;&nbsp;3u&nbsp;&nbsp;IPv4&nbsp;&nbsp; 4612&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UDP *:wpages <br/>rpc.statd 1869&nbsp;&nbsp;root&nbsp;&nbsp;&nbsp;&nbsp;6u&nbsp;&nbsp;IPv4&nbsp;&nbsp; 4602&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UDP *:notify <br/>cupsd&nbsp;&nbsp;&nbsp;&nbsp; 2141&nbsp;&nbsp;root&nbsp;&nbsp;&nbsp;&nbsp;6u&nbsp;&nbsp;IPv4&nbsp;&nbsp; 5259&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UDP *:ipp <br/>avahi-dae 2311 avahi&nbsp;&nbsp; 13u&nbsp;&nbsp;IPv4&nbsp;&nbsp; 5635&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UDP *:mdns <br/>avahi-dae 2311 avahi&nbsp;&nbsp; 14u&nbsp;&nbsp;IPv6&nbsp;&nbsp; 5636&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UDP *:mdns <br/>avahi-dae 2311 avahi&nbsp;&nbsp; 15u&nbsp;&nbsp;IPv4&nbsp;&nbsp; 5637&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UDP *:filenet-tms <br/>avahi-dae 2311 avahi&nbsp;&nbsp; 16u&nbsp;&nbsp;IPv6&nbsp;&nbsp; 5638&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UDP *:filenet-rpc <br/><br/><br/>在lsof的输出可以看到文件描述符及设备的信息,另外还有用户信息.<br/><br/><br/>最后我们来看一下管道和套接字的INODE,每个文件都有自己的INODE,但由于VFS(虚拟文件系统)使所有的文件系统都通用,使tmpfs/procfs下的文件像驻留在磁盘上的文件一样.<br/>INODE保存着文件的数据结构,文件系统中每个对象有一个唯一的INODE.<br/>INODE对于没有文件名的对象,包括socket和管道是非常有用的.<br/>TCP/UDP套接字的INODE,可以用下面的命令来查看:<br/>lsof -i tcp -a -p 2468<br/>COMMAND&nbsp;&nbsp;PID USER&nbsp;&nbsp; FD&nbsp;&nbsp; TYPE DEVICE SIZE NODE NAME<br/>sshd&nbsp;&nbsp;&nbsp;&nbsp;2468 root&nbsp;&nbsp;&nbsp;&nbsp;3u&nbsp;&nbsp;IPv6&nbsp;&nbsp; 6547&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP 192.168.27.130:ssh-&gt;192.168.27.1:snifferdata (ESTABLISHED)<br/><br/>其它的DEIVCE就是它的INODE,NODE一栏只显示TCP<br/><br/>下面是UDP套接字的例子:<br/>lsof -i udp -a -p 1869<br/>COMMAND&nbsp;&nbsp;&nbsp;&nbsp;PID USER&nbsp;&nbsp; FD&nbsp;&nbsp; TYPE DEVICE SIZE NODE NAME<br/>rpc.statd 1869 root&nbsp;&nbsp;&nbsp;&nbsp;3u&nbsp;&nbsp;IPv4&nbsp;&nbsp; 4612&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UDP *:wpages <br/>rpc.statd 1869 root&nbsp;&nbsp;&nbsp;&nbsp;6u&nbsp;&nbsp;IPv4&nbsp;&nbsp; 4602&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UDP *:notify <br/><br/>对于UNIX的本地套接字,可以直接用netstat来查看,如下:<br/>netstat -xnp<br/>Active UNIX domain sockets (w/o servers)<br/>Proto RefCnt Flags&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; State&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I-Node PID/Program name&nbsp;&nbsp;&nbsp;&nbsp;Path<br/>unix&nbsp;&nbsp;17&nbsp;&nbsp;&nbsp;&nbsp; [ ]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DGRAM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4416&nbsp;&nbsp; 1774/syslogd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/dev/log<br/>unix&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ ]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DGRAM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1081&nbsp;&nbsp; 385/udevd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @/org/kernel/udev/udevd<br/>unix&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ ]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DGRAM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5686&nbsp;&nbsp; 2328/hald&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @/org/freedesktop/hal/udev_event<br/><br/>而对于管道,可以在/proc/pid/fd和lsof -p pid的方式来查看INODE<br/><br/>摘自：http://www.linuxidc.com/Linux/2012-07/66415.htm<br/><br/>附录，实践总结：<br/>有的可能没有*.sock，可用其它的看：<br/>法一）netstat -nlxp<br/><br/>法二）cat /proc/net/unix<br/><br/>法三）/proc/PID号/fd/<br/><br/>法四）lsof /tmp/localsock&nbsp;&nbsp;&nbsp;&nbsp; <br/>lsof /tmp/mysqld.sock<br/>COMMAND&nbsp;&nbsp; PID&nbsp;&nbsp;USER&nbsp;&nbsp; FD&nbsp;&nbsp; TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DEVICE SIZE&nbsp;&nbsp;&nbsp;&nbsp; NODE NAME<br/>mysqld&nbsp;&nbsp;15066 mysql&nbsp;&nbsp; 20u&nbsp;&nbsp;unix 0xffff8100b983a8c0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;87854212 /tmp/mysqld.sock<br/><br/>法五）lsof -i tcp -a -p 32651<br/>lsof -i tcp -a -p 32651<br/>COMMAND&nbsp;&nbsp;&nbsp;&nbsp; PID USER&nbsp;&nbsp; FD&nbsp;&nbsp; TYPE&nbsp;&nbsp;&nbsp;&nbsp; DEVICE SIZE NODE NAME<br/>multipepo 32651 root&nbsp;&nbsp;&nbsp;&nbsp;5u&nbsp;&nbsp;IPv4 1020446723&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP *:webcache (LISTEN)<br/><br/>法六）而对于管道,可以在/proc/pid/fd和lsof -p pid的方式来查看INODE。
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] （转） linux管道与套接字的调试工具]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>