问题描述
今天启动项目一个执行机,报了一个Port already in use
的异常。
解决问题
端口占用一般解决思路就是拿到端口占用进程号,然后kill一下这个进程号即可。
Linux环境下或者macos可以借助于lsof
命令解决这个问题,首先什么是lsof
命令?
- lsof
lsof(list open files)是一个列出当前系统打开文件的工具,我们都知道在Unix中一切都是可以由文件进行描述的,直接输入lsof命令输入如下所示:
lsof输出各列信息的意义如下:
- COMMAND:进程的名称 PID:进程标识符
- USER:进程所有者
- FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
- TYPE:文件类型,如DIR、REG等
- DEVICE:指定磁盘的名称
- SIZE:文件的大小
- NODE:索引节点(文件在磁盘上的标识)
- NAME:打开文件的确切名称
通过上面的输出列我们可以查询到PID从而解决我们上面遇到的问题,其常用的命令格式如下
lsof -i tcp:port
参数说明:使用-i显示所有连接,tcp只显示tcp的链接信息,port可以填入实际想要查询的端口号。通过这个查询到PID然后kill掉进程即可解决端口占用的问题。