linux-netstat命令
最近经常用到netstat来查看端口被谁监听,为了方便以后查阅,整理一下用法。
直接执行netstat,输出结果有两部分:
第一部分是Active Internet connections (w/o servers),经查询是有源TCP连接,其中"Recv-Q"和"Send-Q"指%0A的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。
第二部分是Active UNIX domain sockets (w/o servers),称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。
常见参数:
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名(进程名)
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
LISTEN和LISTENING的状态只有用-a或者-l才能看到
使用示例:
列出所有端口并通过more翻页显示
netstat -a |more
列出所有tcp端口:
netstat -at
列出所有udp端口:
列出出于监听状态的连接
netstat -l
列出处于监听状态的tcp连接:
netstat -lt
列出出于监听状态的udp连接;
netstat -lu
列出出于监听状态的unix端口
netstat -lx
在netstat输出中显示PID和进程名称用-p
在netstat输出中不显示别名,用数字代替,使用 netstat -n
工作中比较常用的是netstat -nap | grep 端口号,例如:
得到了进程号如果还是不确定端口被哪个程序占用,可以用ll /proc/进程号找到执行文件所在目录:
或者:
/proc目录中包含许多以数字命名的子目录,这些数字表示系统当前正在运行进程的进程号,里面包含对应进程相关的多个信息文件
关于/proc更详细的信息参考http://blog.csdn.net/hiyun9/article/details/51967742
参考资料:https://www.cnblogs.com/huxinping8800/p/7084994.html