linux编程如何避免使用到已经被占用的端口号?
本行业问题
Linux下服务一般是通过shell脚本来启动程序或者服务,在shell脚本启动时,可以使用命令来查询,本服务或程序端口是否被其他程序占用,可以使用netstat命令。
netstat
比如我们查询80端口是否被占用,命令如下:
# netstat -anp|grep 80
从上面可以看出80端口已经被nginx监听。
netstat具体的参数如下,【-a】显示所有的socket连接,【-n】不使用域名,而使用ip显示,【-p】显示监听此socket的进程名称,【grep】是过滤包含80字符的匹配项。
简单函数封装
我们在写脚本时尽量将经常使用的脚本封装成函数,以便其他程序也可以调用这个函数,如下面的脚本,实现端口的查询函数【入参1=端口】:
我们用几个端口测试一下,可以看出上面我的端口被nginx占用
良好的编写代码习惯
在linux编程写程序时,尽量不要将监听的端口、IP、网卡接口等可能会发生变化的参数,写死到代码中,可以定义一个配置文件,把经常变化的参数写入配置文件,在程序启动或者调用时,加载配置文件来读取参数。
以上希望能够帮助到你。
如何查看linux那个程序占用了端口?
查看端口使用情况,使用netstat命令。
查看已经连接的服务端口(ESTABLISHED netstat -a 查看所有的服务端口(LISTEN,ESTABLISHED) netstat -ap 查看8080端口,则可以结合grep命令:netstat -ap | grep 8080 如查看8888端口,则在终端中输入:lsof -i:8888
查看linux文件描述符占用情况?
命令行输入df -hl查看,或者du -sh /* 查看。
7777端口被占用?
如果我们要使用7777端口的时候,发现被占用,可以先找到哪些程序占用端口,将程序关闭再次尝试
Windows下使用如下命令查找程序
netstat -nao | findstr "7777"
Linux下使用lsof命令查找程序
lsof -i:7777
查到到对应的程序后就可以把程序关闭
Linux查看tomcat端口是否占用?
我的:linux查看tomcat端口是否占用,需要使用netstat -ano | grep 端口号 的命令。
一般tomcat使用的端口在安装目录下的配置文件中,位于Tomcat的安装目录/conf/server.xml文件中。一般代码如下:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
其中TCP 8080端口就是Tomcat的http访问端口,默认是TCP 8080号端口,负责建立HTTP连接。
使用netstat -plantup | grep 8080 就可以看到tomcat的端口是否开启,被占用。
接着使用fuser -v 8080/tcp 就可以查看到tomcat的端口被哪个程序或者进程占用了。