标签:运维 压箱底 ss 端口 netstat 自动化 lsof sockets socket
netstat
netstat
命令英语显示各种网络相关信息,如网络连接、路由表接口状态(Interface Statistics),masquerade连接,多播成员(Multicast Memberships)等等。
[root@vagrant-centos65 ~]# netstat
常用参数:
-a:(all)显示所有选项,默认不显示LISTEN相关
-t:(tcp)仅显示 tcp 相关选项
-u:(udp)仅显示 udp 相关选项
-l:仅列出有在 Listen(监听)的服务状态
-p:显示简历相关链接的程序名
-r:显示路由信息,路由表
-e:显示扩展信息,例如 uid 等
-s:按各个协议进行统计
-c:每隔一个固定时间,执行该 netstat 命令
注:LISTEC 和 LISTENING 的状态只有用 -a 或者 -l 才能看到
用法如下:
- 列出所有端口号(包括监听和未监听)
# netstat -a 列出所有端口
# netstat -at 列出所有 tcp 端口
# netstat -au 列出所有 udp 单口
- 列出所有处于监听状态的 sockets
# netstat -l 只显示监听端口
# netstat -lt 只列出所有监听 tcp 端口
# netstat -lu 只列出所有监听 udp 端口
# netstat -lx 之列吃所有监听 UNIX 端口
- 显示每隔协议的统计信息
# netstat -s 显示所有端口的统计信息
# netstat -st 显示 tcp 端口的统计信息
# netstat -sc 显示 udp 端口的统计信息
- 在 netstat 输出中显示 PID 和进程名称
# netstat -pt
- 显示核心路由信息
# netstat -r
-
找出程序运行的端口
并不是所有的进程都能找到,没有权限的会不显示,使用 root 权限查看所有的信息。
# netstat -ap | grep ssh
- 找出运行在指定端口的进程
# netstat -an | grep ':80'
- 显示网络接口列表
# netstat -i
ss
ss
即 socket state,也就是说,是可以查看系统中 socket 的状态的,我们可以用netstat
的,但为什么还要用 ss
这个工具呢?当然 ss
自然有它的优点,当我们打开的 socket 数量很多时,netstat
就会变得很慢。
netstat是遍历/proc下面每个PID目录,ss直接读/proc/net下面的统计信息。所以ss执行的时候消耗资源以及消耗的时间都比netstat少很多
[root@vagrant-centos65 ~]# ss -h
Usage: ss [ OPTIONS ]
ss [ OPTIONS ] [ FILTER ]
-h, --help this message
-V, --version output version information
-n, --numeric don't resolve service names
-r, --resolve resolve host names
-a, --all display all sockets
-l, --listening display listening sockets
-o, --options show timer information
-e, --extended show detailed socket information
-m, --memory show socket memory usage
-p, --processes show process using socket
-i, --info show internal TCP information
-s, --summary show socket usage summary
-4, --ipv4 display only IP version 4 sockets
-6, --ipv6 display only IP version 6 sockets
-0, --packet display PACKET sockets
-t, --tcp display only TCP sockets
-u, --udp display only UDP sockets
-d, --dccp display only DCCP sockets
-w, --raw display only RAW sockets
-x, --unix display only Unix domain sockets
-f, --family=FAMILY display sockets of type FAMILY
-A, --query=QUERY, --socket=QUERY
QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]
-D, --diag=FILE Dump raw information about TCP sockets to FILE
-F, --filter=FILE read filter information from FILE
FILTER := [ state TCP-STATE ] [ EXPRESSION ]
常用的ss
命令
ss -l 显示本地打开的所有端口
ss -pl 显示每个进程具体打开的socket
ss -t -a 显示所有tcp socket
ss -u -a 显示所有的UDP socekt
ss -s 列出当前socket详细信息
ss -o state established '( dport = :http or sport = :http )' 列出所有http连接中的连接
ss src ADDRESS_PATTERN 使用IP地址筛选
src:表示来源 ADDRESS_PATTERN:表示地址规则
ss dport OP PORT 端口筛选
OP:是运算符
PORT:表示端口
dport:表示过滤目标端口、相反的有sport
OP运算符如下:
<= or le : 小于等于
>= or ge : 大于等于
== or eq : 等于
!= or ne : 不等于端口
< or lt : 小于这个端口 > or gt : 大于端口
lsof
lsof
(list open files)是一个列出当前系统打开文件的工具。在Linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以,lsof
的功能很强大。一般 root 用户才能执行lsof
命令,普通用户可以看见/usr/sbin/lsof
命令,但是普通用户执行会显示“permission denied”。因此通过lsof
工具能够查看这个列表对系统监测以及排错将是很有帮助的。
# yum -y install losf
在终端下输入lsof
即可显示系统打开的文件,因为lsof
需要访问核心内存和各种文件的身份,来运行它才能够充分地发挥其功能。即需要 root 权限
[root@vagrant-centos65 ~]# lsof
用法:
lsof abc.txt 显示开启文件abc.txt的进程
lsof directory 查找谁在使用文件目录系统
lsof -i:22 查找22端口被哪个进程占用
lsof -c abc 显示abc进程现在打开的文件
lsof -g gid 显示归属gid的进程情况
lsof -p 12 看进程为12的进程打开了哪些文件
lsof -u username 查看用户打开了哪些文件
lsof -i @192.168.1.111 查看远程已打开的网络连接(连接到192.168.1.111)
标签:运维,压箱底,ss,端口,netstat,自动化,lsof,sockets,socket 来源: https://blog.csdn.net/qq_42992919/article/details/94561046
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。