FreeBSD Unix找出在给定端口号上正在侦听哪些程序
时间:2020-01-09 10:38:41 来源:igfitidea点击:
如何使用命令行找到在FreeBSD Unix系统上某个端口上列出的进程/程序名称?我如何在FreeBSD服务器上查找当前绑定到给定网络端口的进程? 您可以使用以下任何一种命令行工具来显示FreeBSD操作系统上的网络连接,路由表和许多网络接口统计信息。
- netstat命令用于查看网络状态,包括打开的端口,tcp/udp连接等。
- sockstat命令显示打开的套接字。
- lsof命令列出打开的文件,例如网络套接字和磁盘上的文件。
FreeBSD有一个名为sockstat和netstat工具的命令。
这些已经在标准的FreeBSD安装中。
解决方法:您需要从ports集合安装lsof工具。
使用sockstat命令查找在特定端口上侦听的进程
带有标志的netstat命令的示例:
## Show listening sockets ## sockstat -l ## Show listening sockets for IPv4 only ## sockstat -4 -l ## Show listening sockets for IPv6 only ## sockstat -6 -l
在输出结果中:
- USER:拥有并打开套接字的用户。
- COMMAND:负责套接字的命令。
- PID:负责/保持套接字的命令的进程ID。
- FD:套接字的文件描述符号。
- PROTO:与Internet套接字的套接字关联的传输协议,或UNIX套接字的套接字的类型(流或数据报)。LOCAL ADDRESS:对于Internet套接字,这是套接字的本地端绑定的地址至。对于绑定的UNIX套接字,它是套接字的文件名。对于其他UNIX套接字,它是向右箭头,后跟端点文件名,或??。如果无法确定端点。
- FOREIGN ADDRESS :(仅用于Internet套接字)套接字的外部端所绑定的地址。
查找选定的端口
您可以使用grep命令选择某些端口。
在此示例中,找出端口22和80是否打开:
sockstat -4 -l | grep :22 sockstat -4 -l | grep :80
输出示例:
root sshd 642 4 tcp4 *:22 *:*
仅显示连接的插座
语法为:
sockstat -c sockstat -c -4 sockstat -c -4 | grep ssh sockstat -c -4 | grep 22 `root sshd 740 3 tcp4 192.168.1.142:22 192.168.1.4:55115`
(192.168.1.4 ==客户端IP和192.168.1.142 ==端口22的服务器IP)
netstat命令示例以查找打开的端口及其过程
这里相当于netstat:
netstat -a -n | grep LISTEN netstat -a | egrep 'LISTEN|Proto|Active' netstat -a | egrep 'Proto|LISTEN'
输出示例:
Active Internet connections (including servers) Proto Recv-Q Send-Q Local Address Foreign Address (state) tcp4 0 0 localhost.smtp *.* LISTEN tcp4 0 0 *.ssh *.* LISTEN tcp6 0 0 *.ssh *.* LISTEN Active UNIX domain sockets
尽管人们认为sockstat更为有限,但还是很高兴知道,因为有时它在收集某些信息时会更有用。
在FreeBSD上,您可以通过在/etc/services中查找来获得标准端口关联的列表。
如果要找出端口631的用途,可以使用以下命令例如:
$ grep -w 631 /etc/services
使用lsof命令确定特定端口上的进程/pid侦听
有些人已经从Linux迁移到BSD,例如lsof命令。
它不是netstat和sockstat之类的标准。
您将必须安装它。
目前没有包装。
以root身份安装。
因此,首先,使用以下端口安装lsof命令:
# cd /usr/ports/sysutils/lsof/ && make install clean
或使用pkg命令(警告这可能不适用于最新版本10.x):
# pkg install sysutils/lsof
输出示例:
Updating FreeBSD repository catalogue... FreeBSD repository is up-to-date. All repositories are up-to-date. Checking integrity... done (0 conflicting) The following 1 packages will be affected (of 0 checked): New packages to be INSTALLED: lsof: 4.89.c,8 The process will require 224 KiB more space. Proceed with this action? [y/N]: y [1/1] Installing lsof-4.89.c,8... [1/1] Extracting lsof-4.89.c,8: 100%
要发现进程名称,ppd和其他详细信息,解决方法:您需要使用以下语法:
lsof -i :port lsof -i tcp:portNumber lsof -i udp:portNumber
例如,查看可以运行哪个进程在端口80或22上侦听:
lsof -i :80
或者
lsof -i :22
输出示例:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 642 root 3u IPv6 0xfffff8000961a400 0t0 TCP *:ssh (LISTEN) sshd 642 root 4u IPv4 0xfffff8000961a000 0t0 TCP *:ssh (LISTEN) sshd 740 root 3u IPv4 0xfffff800094dec00 0t0 TCP 192.168.1.142:ssh->192.168.1.4:55115 (ESTABLISHED)
要列出所有打开的TCP进程及其PID,请执行:
lsof -iTCP -sTCP:LISTEN lsof -iTCP -sTCP:LISTEN -P -n lsof -n -P -i +c 15
使用lsof实用工具找出哪个进程正在监听端口