Linux如何查询端口占用并杀掉占用端口的进程?

参考回答

在 Linux 中,查询端口占用并杀掉占用端口的进程,通常使用以下步骤:

  1. 查询占用端口的进程
    使用 lsofss 命令来查询占用特定端口的进程。

    lsof -i :8080  # 查询占用8080端口的进程
    

    或者:

    ss -tuln | grep :8080  # 使用ss命令查询
    
  2. 杀掉占用端口的进程
    通过查询到的进程 ID(PID)使用 kill 命令来终止该进程:

    kill -9 <PID>  # 强制终止进程
    

    如果你知道进程的端口,也可以直接用 fuser 来杀掉占用端口的进程:

    fuser -k 8080/tcp  # 杀掉占用8080端口的进程
    

详细讲解与拓展

1. 使用 lsof 查询端口占用

lsof 是一个非常强大的命令,用于列出系统中打开的文件,包括网络端口。当你查询某个端口时,-i 选项用来指定端口。

lsof -i :8080

输出类似:

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java     2543 user   34u  IPv6  21531      0t0  TCP *:http-alt (LISTEN)

在上面的例子中,进程 java 占用了 8080 端口,进程 ID(PID)是 2543

2. 使用 ss 查询端口占用

ss 命令是查看端口占用的现代工具,相比 lsof,它更加高效。使用 ss -tuln 可以显示所有监听的端口:

ss -tuln | grep :8080

输出类似:

LISTEN 0      128          *:8080                     *:*     

表示端口 8080 正在监听中。要查询特定端口,可以通过 grep 过滤。

3. 使用 kill 杀掉占用端口的进程

一旦找到了进程 ID(PID),你可以使用 kill 命令来结束该进程:

kill -9 2543
  • -9 是发送 SIGKILL 信号,强制终止进程,不能被捕捉或忽略。

4. 使用 fuser 快速杀掉占用端口的进程

fuser 是一个更简洁的工具,用来查找并杀掉占用端口的进程:

fuser -k 8080/tcp
  • -k:表示终止占用端口的进程。
  • 8080/tcp:表示操作的是 TCP 协议下的 8080 端口。

5. 多个端口占用的情况

如果你需要查询多个端口或者杀掉多个进程,可以结合使用 lsofsskill 等命令。例如,查询多个端口的占用:

lsof -i :8080 -i :9090

或批量杀掉进程:

kill -9 $(lsof -t -i :8080)

这会将所有占用 8080 端口的进程都杀掉。


总结

  1. 查询占用端口的进程
    • 使用 lsof -i :<port>ss -tuln | grep :<port> 查询端口占用。
  2. 杀掉占用端口的进程
    • 通过进程 ID 使用 kill -9 <PID> 强制终止进程。
    • 使用 fuser -k <port>/tcp 快速杀掉占用端口的进程。

通过掌握这些命令,能够有效管理系统端口,确保没有无关进程占用重要端口。

发表评论

后才能评论