📌  相关文章
📜  查找端口的 pid 并在 linux 中终止进程 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:40:25.138000             🧑  作者: Mango

查找端口的 pid 并在 Linux 中终止进程 - Shell/Bash

在Linux操作系统中,我们经常需要查找使用某个端口的进程的PID,并在需要的时候终止掉该进程。在本文中,我们将介绍如何使用Shell/Bash编写脚本,以便能够完成这一任务。

1. 查找端口的PID

要查找某个端口的PID,我们可以使用以下命令:

sudo netstat -nlp | grep :<port number>

这个命令的作用是利用netstat命令查看所有网络连接的状态,并且通过grep命令过滤出指定端口的连接。然后,我们就可以得到这个连接所对应的进程的PID。

返回结果的格式类似于:

tcp        0      0 0.0.0.0:<port number>         0.0.0.0:*               LISTEN      <pid>/<process name>

其中,<pid>代表进程的PID,<process name>代表进程的名称。我们可以根据该信息来终止进程。

2. 终止进程

要终止进程,我们可以使用以下命令:

sudo kill <pid>

这个命令将发送一个用于终止进程的信号,其中<pid>代表要终止的进程的PID。另外,我们也可以使用killall命令来终止指定名称的所有进程。

终止进程时要格外小心,因为你可能会不小心终止掉错误的进程。在确认PID之前,请仔细检查进程的名称和描述。

3. 编写脚本

要方便地查找和终止端口对应的进程,我们可以将上述命令封装到一个简单的Shell脚本中。

脚本的示例代码如下:

#!/bin/bash

if [ -z "$1" ]; then
    echo "Please specify the port number."
else
    port=$1
    pid=$(sudo netstat -nlp | grep :$port | awk '{print $7}' | sed 's/\/.*//')
    if [ -z "$pid" ]; then
        echo "No process found on port $port."
    else
        echo "killing process $pid"
        sudo kill $pid
        echo "Process $pid has been killed."
    fi
fi

该脚本将接受一个端口号作为其唯一参数。如果给定了端口号,则该脚本将查找该端口上正在运行的进程的PID,然后终止该进程。如果没有找到正在运行的进程,则脚本将输出一条相应的消息。

要运行该脚本,请将其保存为killport.sh文件,并通过以下方式运行:

sudo ./killport.sh <port number>
结论

查找和终止端口对应的进程是完成Linux系统管理工作的常见任务之一。使用上述命令和脚本,我们可以方便地完成这一任务,并将其整合到我们的自动化脚本中,以实现更有效率的系统管理。