windows下
在cmd中输入netstat /?可以查看相关命令的信息
netstat -ano就是: 显示所有连接和侦听的端口 + 以数字形式显式显式ip和端口 + 显示拥有的与每个连接关联的进程 ID
要查找某个特定端口的进程ID 可以追加 | 管道符 findstr “要查找的指定端口”
demo
netstat -ano | findstr "9001"
linux下
netstat的输出结果可以分为两个部分:
- 一个是Active Internet
connections,称为有源TCP连接,其中"Recv-Q"和"Send-Q"指%0A的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。 - 另一个是Active UNIX domain
sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。
Proto显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名。
常见参数
- -a (all)显示所有选项,默认不显示LISTEN相关
- -t (tcp)仅显示tcp相关选项
- -u (udp)仅显示udp相关选项
- -n 拒绝显示别名,能显示数字的全部转化成数字。
- -l 仅列出有在 Listen (监听) 的服務状态
- -p 显示建立相关链接的程序名
- -r 显示路由信息,路由表
- -e 显示扩展信息,例如uid等
- -s 按各个协议进行统计
- -c 每隔一个固定时间,执行该netstat命令。
提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到
使用demo: netstat -ant #以数字形式查看所有的tcp链接
如果想对查看的结果distinct一下,并且只想查看某一列的值的话可以借助awk命令netstat -ant | awk '{print $4}' | sort | uniq -c
这里的$4代表第4列也就是我们需要的ip和端口那一列
只想查看中间的ip和端口那一列
这里提一下uniq
命令,它只能去重相邻的文本行,所以在使用uniq
去重前一般都会sort
排序一下,让重复行集中到一起,然后就可以使用uniq
去重了
sort
默认是降序的 sort -r
是升序-r的意思就是反转.但是其实我在上面的demo中使用sort -r的时候端口的顺序没有依次排序,我觉得应该是因为sort 排序了前面的ip的原因.
sort的其他选项:
- -b:忽略每行前面开始出的空格字符;
- -c:检查文件是否已经按照顺序排序;
- -d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符;
- -f:排序时,将小写字母视为大写字母;
- -i:排序时,除了040至176之间的ASCII字符外,忽略其他的字符;
- -m:将几个排序号的文件进行合并;
- -M:将前面3个字母依照月份的缩写进行排序;
- -n:依照数值的大小排序;
- -o<输出文件>:将排序后的结果存入制定的文件;
- -r:以相反的顺序来排序;
- -t<分隔字符>:指定排序时所用的栏位分隔字符;
- +<起始栏位>-<结束栏位>:以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
uniq的其他选项:
- -c或——count: 在每列旁边显示该行重复出现的次数;
- -d或–repeated: 仅显示重复出现的行列;
- -f<栏位>或–skip-fields=<栏位>:忽略比较指定的栏位;
- -s<字符位置>或–skip-chars=<字符位置>:忽略比较指定的字符;
- -u或——unique:仅显示出一次的行列;
- -w<字符位置>或–check-chars=<字符位置>:指定要比较的字符。
demo
- 删除重复行:
uniq file.txt
sort file.txt | uniq
sort -u file.txt - 只显示单一行:
uniq -u file.txt
sort file.txt | uniq -u - 统计各行在文件中出现的次数:
sort file.txt | uniq -c - 在文件中找出重复的行:
sort file.txt | uniq -d
利用sort和uniq求两个文件的并集,交集和差集
-
并集:
cat file1.txt file2.txt | sort | uniq > file.txt
-
交集:
cat file1.txt file2.txt | sort | uniq -d >file.txt
-
差集:
求file1.txt相对于file2.txt的差集,可先求出两者的交集temp.txt,然后在file1.txt中除去temp.txt即可。
cat file1.txt file2.txt | sort | uniq -d > temp.txt
cat file1.txt temp.txt | sort | uniq -u > file.txt
awk分割字符串打印输出对应的元素
awk '{print $4}'
打印column=4的那一列