本文介绍了在 Linux 中查看端口占用情况的一些方法。
全程需要用到下列程序:
- netstat:一个命令行工具,用来显示 网络连接,路由表,和一些 网络接口数据
- fuser:一个命令行工具,用来表示经常使用文件或者套接字
- lsof:一个命令行工具,用来列出当前系统打开文件的工具
- /proc/$pid:在 Linux的 /proc 目录下包含了一个名为 PID (PID为所需进程对应的值)的文件,其包含每个对应PID的进程的 信息,通常,包含进程的名字和打开的端口等。。
# 注:可能需要使用 root 权限使用上述命令
netstat命令:
# 注,如果 PID/Program name 不显示的话,可能是权限不够,请尝试 sudo
使用 grep来过滤结果
• # netstat -tulpn | grep :22
后面的参数是指定需要显示的一些内容,例如图中列出了IP地址,端口号,相应进程PID等内容。
如果知道端口号,想知道对应的进程的一些信息,就可以使用下面的fuser命令
fuser 命令
查看 哪个 进程PID 占用了 53 端口,使用命令
# fuser 53/tcp
# 注,同上,可能有些 进程权限不够看不到,尝试 sudo。
查看该 PID 对应的是哪个进程 ,使用命令:
ls -l /proc/3353/exe
和最上面的介绍一样,每个进程 OS 都会在 /proc 路径下给建立一个对应PID的文件夹,里面存放一些进程信息,exe中即保存了名字。。
# 注,还是权限问题,然后对应 那个PID 是dnsmasq 进程,man dnsmasq 得知,该进程为一个轻量级 DHCP 和 DNS 缓存服务器
查看 一个进程 当前的工作路径
使用命令:
# ls -l /proc/3353/cwd
或者使用 pwdx 命令:
pwdx 3353
查看一个 进程 的 owner
# ps aux | grep 3353