1、netstat和lsof
Netstat
命令用于显示各种网络相关信息
,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。
lsof(list open files)
是一个列出当前系统打开文件的工具。在终端下输入lsof即可显示系统打开的文件,因为 lsof 需要访问核心内存和各种文件
,所以必须以 root 用户
的身份运行它才能够充分地发挥其功能。
1.1netstat各个参数
-a (all)显示所有选项,默认不显示LISTEN相关
-n 拒绝显示别名,能显示数字的全部转化成数字。
-b show the number of bytes in and out
-s 按各个协议进行统计
-w wait(s) 每隔一定秒数来进行显示
更加详细的信息参考man netstat,这里不一一列举(主要是太麻烦了,懒得写)
提示:LISTEN和LISTENING的状态要加-a才能看到
提示:Mac和Linux的指令有所出入,切记不要拿Linux的指令在Mac中用
1.2 网络状态
LISTEN:(Listening for a connection.)侦听来自远方的TCP端口的连接请求
SYN-SENT:(Active; sent SYN. Waiting for a matching connection request after having sent a connection request.)再发送连接请求后等待匹配的连接请求
SYN-RECEIVED:(Sent and received SYN. Waiting for a confirming connection request acknowledgment after having both received and sent connection requests.)再收到和发送一个连接请求后等待对方对连接请求的确认
ESTABLISHED:(Connection established.)代表一个打开的连接
FIN-WAIT-1:(Closed; sent FIN.)等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2:(Closed; FIN is acknowledged; awaiting FIN.)从远程TCP等待连接中断请求
CLOSE-WAIT:(Received FIN; waiting to receive CLOSE.)等待从本地用户发来的连接中断请求
CLOSING:(Closed; exchanged FIN; waiting for FIN.)等待远程TCP对连接中断的确认
LAST-ACK:(Received FIN and CLOSE; waiting for FIN ACK.)等待原来的发向远程TCP的连接中断请求的确认
TIME-WAIT:(In 2 MSL (twice the maximum segment length) quiet wait after close. )等待足够的时间以确保远程TCP接收到连接中断请求的确认
CLOSED:(Connection is closed.)没有任何连接状态
1.3 lsof每个字段状态
COMMAND:进程的名称
PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
TYPE:文件类型,如DIR、REG等
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称
1.4 netstat和lsof区别和关联
netstat无权限控制,lsof有权限控制,只能看到本用户
losf能看到pid和用户,可以找到哪个进程占用了这个端口
2、MAC查看和杀死进程
##一、查看指定端口的进程
sudo lsof -i :27017
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
[mongod] 859 zhangsan 313u IPv6 0x1111111111111 0t0 TCP *:cslistener (LISTEN)
## 二、根据进程名称
ps -ef | grep nginx
501 17780 1 0 8:36下午 ?? 0:00.00 nginx: master process nginx
501 17781 17780 0 8:36下午 ?? 0:00.00 nginx: worker process
501 17790 14611 0 8:39下午 ttys004 0:00.00 grep nginx
然后根据PID杀进程:
sudo kill -9 859
3、Mac下使用netstat 命令应该注意的
使用netstat 命令区别于liunx
如果要查询tcp ,udp 协议的,必须加要加 tcp ,udp
netstat lnp tcp
netsta lnp udp
linux 下:
netstat lntp
netstat lnup
参考资料:
https://blog.csdn.net/xiaomu_33/article/details/88313440
https://www.jianshu.com/p/3d9edcd023d7
https://www.cnblogs.com/blackay03/p/8836135.html