netstat和lsof两个Linux命令查看端口的区别

一、netstat命令介绍

netstat 命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息
netstat用来查看系统当前系统网络状态信息,包括端口,连接情况等,常用方式如下:
netstat -atunlp,各参数含义如下:
• -t : 指明显示TCP端口
• -u : 指明显示UDP端口
• -l : 仅显示监听套接字(LISTEN状态的套接字)
• -p : 显示进程标识符和程序名称,每一个套接字/端口都属于一个程序
• -n : 不进行DNS解析
• -a 显示所有连接的端口

 

二、lsof命令介绍

lsof 是 linux 下的一个非常实用的系统级的监控、诊断工具,它的意思是 List Open Files,很容易你就记住了它是 “ls + of”的组合它可以用来列出被各种进程打开的文件信息,记住:linux 下 “一切皆文件”

lsof filename 显示打开指定文件的所有进程 2

lsof -a 表示两个参数都必须满足时才显示结果

lsof -c string 显示COMMAND列中包含指定字符的进程所有打开的文件

lsof -u username 显示所属user进程打开的文件

lsof -g gid 显示归属gid的进程情况

lsof +d /DIR/ 显示目录下被进程打开的文件

lsof +D /DIR/ 同上,但是会搜索目录下的所有目录,时间相对较长

lsof -d FD 显示指定文件描述符的进程

lsof -n 不将IP转换为hostname,缺省是不加上-n参数

lsof -i 用以显示符合条件的进程情况

 

三、常用操作

1、根据端口port查进程

   netstat -nap | grep port
   lsof  -i:port
2、根据进程pid查端口
  netstat -nap | grep pid
  lsof -i | grep pid

四、注意事项

   netstat在非root下不能识别所有的进程,而且不是自己拥有的进程信息不会展示,需要 root 账号才能显示所有信息。
lsof在非root下执行lsof -i 无任何输出。两者在root下均能显示所有进程,权限不够的话,可以试一下sudo命令。

   1、netstat 可以显示PID、进程名,不能显示进程所属的用户        

   2、lsof 可以显示进程名、PID、用户

# lsof -i :8123
COMMAND  PID USER   FD   TYPE DEVICE SIZE NODE NAME

COMMAND:进程的名称
PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
TYPE:文件类型,如DIR、REG等
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称

posted @ 2024-02-18 14:11  xuzhujack  阅读(117)  评论(0编辑  收藏  举报
;