FreeBSD/Unix如何找出某个端口的监听程序
时间:2019-11-20 08:54:07 来源:igfitidea点击:
如何找出哪个程序在监听某个端口?
如何查找当前绑定到某个端口的进程?
在FreeBSD中,可以使用下面的命令来查看网络连接情况。
- netstat命令用于查看网络状态,包括打开的端口,tcp/udp连接等。
- sockstat命令显示打开的套接字。
- 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`
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
在FreeBSD中,可以使用/etc/services文件来查看标准端口和服务之间的对应关系。
例如,查看631和22端口对应的服务。
$ grep -w 631 /etc/services `ipp 631/tcp #IPP (Internet Printing Protocol) ipp 631/udp #IPP (Internet Printing Protocol)` $ grep -w 22 /etc/services `ssh 22/sctp #Secure Shell Login ssh 22/tcp #Secure Shell Login ssh 22/udp #Secure Shell Login`
使用lsof命令找出打开端口的进程
安装lsof命令:
# cd /usr/ports/sysutils/lsof/ && make install clean
或使用pkg命令安装
# pkg install sysutils/lsof
查看打开指定端口的进程
lsof -i :port lsof -i tcp:portNumber lsof -i udp:portNumber
示例,检查哪个进程打开了80端口?
lsof -i :80
检查哪个进程打开了22端口?
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