Linux使用命令行找出打开了哪个端口

时间:2020-01-09 10:41:34  来源:igfitidea点击:

如何查找和列出Linux操作系统中所有打开的端口?
您能告诉我Linux命令找出在bash shell中打开了哪个端口吗?

说明:Linux中的端口不过是一个逻辑连接位置。

TCP/IP使用端口用于通过LAN,WAN和Internet进行通信。
通常,服务器程序(例如Apache(httpd))在TCP端口80或443上侦听。
客户端程序(例如Web浏览器)连接到TCP端口80以请求网页。
您可以使用cat命令或grep命令/egrep命令linux命令在/etc/services文件中找到预分配的端口号。
例如:

$ cat /etc/services
$ grep -w 80/tcp /etc/services
$ grep -w 443/tcp /etc/services
$ egrep -w '(80|22|443)/tcp' /etc/services

Linux使用命令行找出打开了哪个端口

在Linux中列出打开的端口的过程如下:

  • 使用命令netstat -tulpn打开端口
  • 另一个选择是运行ss -tulpn来打开现代Linux发行版上的端口

让我们详细查看所有命令。

Linux查找端口打开命令

可以使用netstat命令或ss命令找出端口上列出了哪个进程:

$ sudo netstat -tulpn
$ sudo netstat -tulpn | more
$ sudo netstat -tulpn | grep ':port'
$ sudo netstat -tulpn | grep ':22'

或者

$ sudo ss -tulpn
$ sudo ss -tulpn | more
$ sudo ss -tulpn | grep ':port'
$ sudo ss -tulpn | grep ':22'

其中:

  • -t列出Linux上的所有TCP端口
  • -u列出Linux上的所有UDP端口
  • -l仅显示监听的套接字/端口
  • -p在Linux中使用套接字/端口显示进程名称(PID)
  • -n不要尝试使用/etc/resolv.conf文件来解析服务名称(加速选项)

如何查找和列出Linux中所有打开的TCP/UDP端口

您可以使用的其他命令如下。

fuser命令示例,找出哪个端口打开了

可以列出打开tcp端口22的进程PID,执行:

$ sudo fuser 22/tcp

输出示例:

22/tcp:               1462

让我们查看与PID 1462相关的进程名称,执行:

$ sudo ls -l /proc/1462/exe

输出:

lrwxrwxrwx 1 root root 0 Nov  2 11:30 /proc/1462/exe -> /usr/sbin/sshd

/usr/sbin/sshd已打开tcp端口22。
但是,sshd是什么?
让我们找出:

$ whatis sshd

输出示例:

sshd (8)             - OpenSSH SSH daemon

如何在Linux上使用lsof命令查看打开的端口

$ sudo lsof -i :portNumber
$ sudo lsof -i tcp:portNumber
$ sudo lsof -i udp:portNumber
$ sudo lsof -i :22
$ sudo lsof -i :22 | grep LISTEN