在对于Linux系统管理员以及开发者来讲的情形下,有效去管理以及监控TCP端口属于日常运维的基础所在。能够掌握相关的命令行工具,就能够快速地定位服务状态,还能够排查网络连接方面的问题,这是保障系统稳定与安全的关键技能。在本文之中将会从实际应用这个角度出发,系统地梳理几个颇为核心、极为实用的命令以及它们典型的使用场景。

如何在Linux中查看所有TCP端口监听状态

审查系统当下正处于监听状态的TCP端口,极为日常使用的命令乃netstatss。当中,ss命令身为更具现代特性的替代物,速率更为迅疾,信息更为径直,.

一旦执行 ss -tln,那么便能够将所有处于监听(LISTEN)状态的 TCP 端口给罗列出来。其中,-t 所代表的意义是 TCP免费linux主机,-l 表明只为仅监听之中的套接字,-n 的意思是以数字形式去显示地址以及端口。其输出会得以清晰地展现出本地地址和端口号,以此来协助你去确认究竟哪些服务已处于就绪状态。打个比方,要是看到 :22,那就意味着 SSH 服务正在默认端口进行监听 。

linux查看端口对应的程序_linux查看tcp端口命令_查看端口情况的linux指令

还有一个传统工具是 netstat -tln,它的输出跟 ss 相像。尽管在某些较旧的系统里依旧被大量使用,然而在新版本Linux当中,更建议使用 ss。不管用哪个,重点在于领会输出里“Local Address”这一列,它确切地告知你服务所绑定的IP以及端口,0.0.0.0 意味着监听全部网络接口。

如何查看所有已建立的TCP连接

进行服务器对外进行通信或者内部服务之间进行调用的排查之时,是需要去查看已经建立起来的处于活跃状态的TCP连接的,借助 ss -t 或者 netstat -tn 能够达成这个任务。

这些命令,会将所有状态是ESTAB(已建立)的连接列出来,其中有本地的IP端口,还有远程的IP端口,以及连接状态,这对于分析服务器跟哪些外部地址存在数据交互而言,是极其有用的,比如说,当怀疑服务器遭遇异常连接时,能够快速地去筛查陌生的远程地址 。

linux查看tcp端口命令_linux查看端口对应的程序_查看端口情况的linux指令

若想要查看更为详细的资料,像进程ID这种,能够在ss命令的基础上添加-p选项,也就是ss -tp ,而这可以直接呈现究竟是哪一个进程,比如说nginx、mysql,促成了该连接,给故障定位提供了直接的线索 ,netstat相对应的参数是以-tp或者-anp | grep ESTAB进行组合过滤 。

如何根据端口号查找对应进程

当察觉到某个不晓得端口处于监听状态,或者有重启占用端口服务的需求时,首要的任务所在便是找出其背后的进程,lsof命令以及ss命令在这样的场景之中所发挥的作用颇为显著。

最为直接的办法乃是运用 lsof -i :端口号 ,就比如说,lsof -i :3306 会即刻呈现占用MySQL默认端口的进程之名、PID以及用户,此命令所包含的信息极为全面,是用于深度排查的厉害工具。

linux查看tcp端口命令_linux查看端口对应的程序_查看端口情况的linux指令

采取ss命令同样能够予以达成,展现成ss -ltnp | grep :端口号这般的形式。借由管道符去进行过滤,能够于监听列表里实现精准的定位情形。输出内容之中的pid=以及process=字段会明确指出进程的相关信息。将这种方法予以掌握,能够使得你在多数的Linux发行版上面迅速完成端口跟进程之间的关联。

如何检查某个特定TCP端口是否开放

有些时候,得从网络方面去验证一个端口能不能被访问,这存在本地检查以及远程检查这两类情形。于服务器本地,借助 nc(即netcat)或者 telnet 工具来展开快速测试。

关于在本地进行检查时,借助nc -z -v localhost 端口号能够迅速判定指定端口是不是开放。其中,-z所代表的是扫描的模式!而-v则是用于输出更多非常详细的内容信息。要是所述端口处于开放状态,那便会呈现出“succeeded”;反之不然的话,就会表明连接是失败的。这可是用来测试本地服务的配置究竟能不能使之生效的极为便利便捷的可行方法路径。

若一定要从别的一台机器去测试目标服务器的端口,也可采用 nc -z -v 目标IP 端口号 。另外,更为简便的 telnet 目标IP 端口号 同样能够直观地进行判断。一旦连接成功,telnet便会进入到一个空白的会话;要是连接失败,就会给出连接被拒绝或者超时的提示 。

linux查看端口对应的程序_linux查看tcp端口命令_查看端口情况的linux指令

如何持续监控TCP端口连接变化

于动态排障之际,或者关乎安全监控之时,持续去观察端口连接所产生的变化qq for linux,这是极为关键重要的。在这个时候呢,可以把上述所提及的命令,跟那个watch工具相互结合起来linux查看tcp端口命令,以此达成定时刷新的实际效果。

比如,去运行 watch -n 1 ‘ss -t’ 这个操作,能够达成每秒就对所有TCP连接的状态列表予以刷新的效果。如此一来,你便能够实时察觉到新连接的构建事件、旧连接的消逝情形,这对于监控突发流量是格外适用的,或者说在测试服务重启之际的连接恢复状况时也是很适用的。

针对于更着重于监听端口变化的情况,能够运用 watch -n 2 ‘ss -tln’,设置每2秒对监听端口列表予以刷新,这有助于你去确认服务是不是成功启动且开始进行监听,又或者是监控有没有异常的后门端口出现。

如何解读TCP连接状态以进行故障诊断

linux查看tcp端口命令_linux查看端口对应的程序_查看端口情况的linux指令

深度网络排错的基础在于理解TCP连接的多种状态,在透过 ss -t 或者 netstat -t 去查看连接之际,常见的状态包含 LISTENESTABLISHEDTIME-WAITCLOSE-WAIT 等等。

LISTEN状态所呈现的是,服务端处于等待连接的状况。ESTABLISHED所表达的意思是,连接处于活跃的状态。要是出现大量的TIME-WAIT,一般而言这属于短连接频繁进行建立操作以及关闭操作的正常情形,不过数量过多的话或许需要对内核参数作出调整。而一旦出现大量的CLOSE-WAIT,那么往往是因为应用程序没有及时地将套接字关闭,这有可能会致使资源出现泄露的情况。

比如说,要是察觉到大量连接滞留在FIN-WAIT-2或者CLOSE-WAIT状态,极有可能是对端出现异常情况或者本端程序存在bug。此时得借助-p选项寻觅到相关进程,进而深入剖析应用日志。明白这些状态linux查看tcp端口命令,能够把单纯的端口查看提升为有效的性能以及故障分析。

于实际工作当中,你究竟是更倾心于运用经典的netstat呢,还是更青睐于运用更具现代感的ss命令去排查网络问题呢?缘由何在?乐于在评论区去分享你的经验以及理由,要是觉着本文对你存有帮助,请点赞予以支持并且分享给更多有需求的伙伴。

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复