Linux常用命令整理4:lsof,netstat
学习一定要有章法,所谓章法就是内在的逻辑关系 !
lsof
常用于以列表的形式显示所有打开的文件和进程。
以进程-p,用户-u,命令-c,网络-i,文件或目录的维度查看对应的使用关系
lsof #网络连接:lsof -i[46] [protocol][@hostname|hostaddr][:service|port] lsof -i #显示所有连接 lsof -i 6 #获取ipv6流量 lsof -i tcp [或udp] #显示tcp连接 lsof -i :80 #显示与指定端口相关的网络信息 lsof -i @host:post #显示指定主机与端口的连接 lsof -i -s tcp:listen[或 established等] #显示等待中[或已建立]的连接 #用户 :各种用户在系统上正在干的事情,包括网络活动和对文件的操作等 lsof -u username #显示指定用户打开了什么 #命令和进程 :查看指定程序或进程由什么启动 lsof -c cname #查看指定命令正在使用的文件或网络连接,比如 php,node,nginx...二进制文件 lsof -p pid #查看指定进程id打开的文件或网络连接 #文件和目录 lsof /var/log/ #显示与指定目录交互的一切 lsof /var/log/test.log #显示与指定文件交互的一切 #只返回pid lsof -t kill -9 `lsof -t -u username` #消灭指定用户运行的所有定西
netstat:
主要功能是以网络连接为核心,协议,获取连接地址(ip和端口),连接状态, 进程,用户,inode等信息;
语法
netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip] -a (all)显示所有选项,默认不显示LISTEN相关 -n 能显示数字的全部转化成数字。 -l 仅列出有在 Listen (监听) 的服務状态 -p 显示建立相关链接的程序名 -e 显示扩展信息,例如uid等 -t 仅显示tcp相关选项 -u 仅显示udp相关选项 -x unix -s 按各个协议进行统计 -c 每隔一个固定时间,执行该netstat命令。
举例
netstat -anpe|grep xxx #核心命令 netstat -a | more # 列出所有端口 netstat -l #只显示监听端口 netstat -e #扩展详细信息:用户,inode netstat -p #在 netstat 输出中显示 PID 和进程名称 netstat -c #每隔一秒输出网络信息 netstat -r #显示核心路由信息 netstat -i #显示网络接口列表 netstat -s #显示所有端口的统计信息 #查看当前并发连接数 netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a,S[a]}' #监控某端口连接数: netstat -n | grep tcp | grep 侦听端口 | wc -l