使用关闭进程的方式解决端口冲突

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/momDIY/article/details/79965955

当我们启动服务时可能出现端口号被占用的情况,此时可以用过通过想要使用的端口号查看此端口号上运行的进程,拿到这个进程Id,从而关闭进程使得待运行的服务正常运行。以nodejs为例:

打印了下完整的端口占用的错误对象信息:

{ Error: listen EADDRINUSE :::7001
    at Object._errnoException (util.js:1022:11)
    at _exceptionWithHostPort (util.js:1044:20)
    at Server.setupListenHandle [as _listen2] (net.js:1351:14)
    at listenInCluster (net.js:1392:12)
    at Server.listen (net.js:1476:7)
    at Object.<anonymous> (/Users/stevenlee/github/bebetter/eggjs-note-steven/demo/001-mini/index.js:22:8)
    at Module._compile (module.js:643:30)
    at Object.Module._extensions..js (module.js:654:10)
    at Module.load (module.js:556:32)
    at tryModuleLoad (module.js:499:12)
  code: 'EADDRINUSE',
  errno: 'EADDRINUSE',
  syscall: 'listen',
  address: '::',
  port: 7001 }

也就是常见的EADDRINUSE报错。

一、查看某个端口运行的进程

查看端口运行的进程一般有两种方式,netstatlsof命令。(端口号以7001为例)

1.使用netstat命令

//输出某个端口当前运行的进程信息
$ netstat -an | grep 7001
// tcp46    0      0  *.7001          *.*               LISTEN 

//输出某个端口当前运行的进程信息及进程Id等信息
$ netstat -anv | grep 7001
//tcp46     0      0  *.7001          *.*               LISTEN      131072 131072  16000      0
  • 以上命令输出了一条结果,代表7001端口此时只有一个进程
  • 输出结果的倒数第二个参数(16000)对应的就是该进程的进程Id

2.使用lsof命令

注:lsof命令属于Linux命令,在mac系统或linux系统可直接使用,暂不适用于windows系统。

$ lsof -i:7001
//输出结果:
// COMMAND   PID      USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
// node    16000 stevenlee   13u  IPv6 0x308d6494ec0fe381      0t0  TCP *:afs3-callback (LISTEN)

对应输出描述如下:

输出名 描述
COMMAND 进程的名称
PID 进程标识符(进程Id)
USER 进程所有者
FD 文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
TYPE 文件类型,如DIR、REG等
DEVICE 指定磁盘的名称
SIZE 文件的大小
NODE 索引节点(文件在磁盘上的标识)
NAME 打开文件的确切名称

根据终端输出我们可以愉快地拿到进程Id:16000

3.使用nodejs内置process模块

Nodejs中,process对象是一个全局变量,因此无需require。它提供当前Node进程的相关信息。使用process.pid可以拿到当前进程的PID。

console.log(`This process is pid ${process.pid}`);
//16000

二.关闭进程

直接使用kill -9命令强制终止进程。

语法:kill -9 <进程Id>

$ kill -9 16000

输入之后回车,没有任何反馈,表明你的操作成功了(没有消息就是好消息)。

end

猜你喜欢

转载自blog.csdn.net/momDIY/article/details/79965955