使用 Top、Netstat 或 lsof 标识进程
好吧,如果你打算杀死某个进程,你至少应该知道它的ID,所以在知道终止进程的方法之前,让我们学习两个命令,我们可以在Ubuntu Linux中使用它们来识别与侦听端口关联的正在运行的进程ID(PID)。
使用 Top 查找活动进程 ID (PID):
要查找进程以及在其上运行的服务,用户可以使用 TOP 实用程序:
top
它将列出所有活动进程,使用向下箭头键滚动列表并找到您要查找的内容。
使用 netstat
另一个最常见的命令是 netstat,不仅在 Linux 中,我们还可以在 Windows 中使用它来查找端口和 PID 编号。
要列出所有活动的 Intenet 端口:
sudo netstat -tulpn
或者,您可以使用:
ss
然而,如果您已经知道您想知道的进程 ID 的端口号,请使用:
sudo netstat -tulpn | grep :your_port_number
将 your_port_number 替换为要查找的确切端口号,该命令将显示进程 ID。
使用 lsof:
就像 netstat 一样,我们可以使用另一个命令“lsof”来查找特定端口的进程 ID。
sudo lsof -i :your_port_number
查看屏幕截图以清楚地了解。
方式 1:使用 Kill 终止的优雅过程
现在,您已经确定了要结束的服务或端口的 PID 是什么,我们可以使用 KILL 命令正常终止该进程。
语法:
kill <PID>
将上述语法中的 <PID> 替换为要结束的实际进程 ID。此命令将向进程发送 SIGTERM 信号,允许其在终止前执行清理操作。
例:
kill 631
方式2:用杀戮强行终止
如果即使在运行 KILL 命令后,该过程也没有结束或响应 SIGTERM 信号,那么我们可以使用“-9”选项发出“SIGKILL”信号。它将强行结束这一进程。
kill -9 <PID>
再次将 <PID> 替换为实际的进程 ID,但是,此命令不会执行清理任务,而是立即结束进程,因此请谨慎使用。
方式3:pkill命令
Pkill 就像 kill 一样,但有更广泛的选项可供使用。甚至我们可以使用进程名称来发送终止信号。
语法:
sudo pkill -f "<process_name>"
将 <process_name> 替换为要终止的进程的名称。当您知道进程名称但不知道 PID 时,这可能很有用。
例如,您希望使用名称,而不是使用进程 ID。假设您要结束 mysql 进程。
sudo pkill -f mysqld
方式4:热熔器命令
到目前为止,我们已经讨论了两个命令工具,用于使用其 ID 或名称终止进程。现在,如果要通过指定端口号来结束该过程,该怎么办?为此,我们有“fuser”命令,该命令可用于识别和终止使用特定端口的进程。
语法:
sudo fuser -k your_port_number/udp
将 your_port_number 替换为实际端口号。假设您要终止使用端口号 80 的服务或进程,那么使用 fuser 的命令将如下所示:
sudo fuser -k 80/tcp
这会向使用指定端口的进程发送 SIGKILL 信号。
如果上面给出的命令没有终止进程,那么不要依赖默认信号,而是使用 -TERM 选项:
fuser -k -TERM port/udp or fuser -k -TERM port/tcp
示例:
sudo fuser -k -TERM 80/tcp
方式5:使用killall
结束进程的另一种方法是使用“killall”命令,该命令也可以按名称终止进程。
语法:
sudo killall <process_name>
将 <process_name> 替换为要终止的进程的名称。这将终止指定进程的所有实例。
示例:
sudo killall apache2