我也不想用netstat命令
时间: 2023-10-24 08:28:22 浏览: 41
如果您不想使用 `lsof` 和 `netstat` 命令,还有一种方法可以查看占用 3306 端口的程序。可以使用 `/proc` 文件系统,如下所示:
```
sudo ls -l /proc/*/fd/* 2>/dev/null | grep ":\[[:space:]]*socket:\[[:space:]]*\[[[:space:]]*a-zA-Z0-9]*:[[:digit:]]*"
```
该命令会在 `/proc` 文件系统中查找所有的文件描述符,过滤出占用 3306 端口的连接信息。如果该端口没有被占用,则不会有输出。
查看 PID 对应的程序名称的方法与前面的方法相同,可以使用 `ps` 命令,如下所示:
```
sudo ps -p <PID> -o comm=
```
将上述命令中的 `<PID>` 替换为实际的 PID 值,即可得到该进程对应的程序名称。
相关问题
k8s占用的端口号,使用netstat命令查不到
k8s使用的端口号可能会有很多,因为它是一个容器编排系统,它可以管理和运行大量的容器。这些容器可能会运行在不同的主机上,并且可能使用不同的端口。
如果你想要查看k8s使用的端口号,你可以使用kubectl命令行工具,使用以下命令查看集群中所有的服务:
```
kubectl get svc --all-namespaces
```
这将会列出集群中所有的服务以及它们使用的端口号。
另外,k8s还使用一些特定的端口号来进行内部通信,例如:
- 6443:kube-apiserver使用的端口号,用于集群内部的API服务。
- 10250:kubelet使用的端口号,用于与kube-apiserver通信。
- 10251:kube-scheduler使用的端口号,用于与kube-apiserver通信。
- 10252:kube-controller-manager使用的端口号,用于与kube-apiserver通信。
这些端口号可能不会在netstat命令的输出中出现,因为它们是k8s内部使用的端口,不对外暴露。如果你想要查看这些端口的状态,可以使用lsof命令或者ss命令。
我的k8s环境中 nodeport端口通过netstat命令或者ss -tnlp都查不到 但是可以正常使用
这种情况可能是因为在 Kubernetes 集群中使用的是 NodePort 类型的服务,它是通过 iptables 转发实现的。因此,在节点上使用 netstat 或 ss 命令是无法看到 NodePort 的监听端口的。
如果您想查看 Kubernetes NodePort 服务的端口映射,可以运行以下命令:
```
kubectl get svc <service-name> -o jsonpath='{.spec.ports[0].nodePort}'
```
其中,`<service-name>` 是您要查看的服务名称。该命令将返回 NodePort 端口号。
如果您仍然想通过 netstat 或 ss 命令查看转发规则,可以执行以下命令:
```
iptables-save | grep KUBE-SERVICES | grep <service-name>
```
其中,`<service-name>` 是您要查看的服务名称。该命令将返回与该服务相关的 iptables 规则,其中包括 NodePort 的监听端口。