在 Linux 中终止进程通常涉及使用进程 ID 和 kill 命令。 您还可以将进程名称与 killall 命令一起使用。
这在您知道进程 ID 或名称时有效。 但在某些情况下,您可能不知道,或者您只是不一定需要知道。
为了 example,如果你想杀死在特定端口上运行的进程,你可能根本不需要知道进程 ID 或名称。 您可以根据进程使用的端口号终止进程。
让我告诉你如何去做。
根据端口号终止进程
这 fuser
命令与 -k
(kill) 选项将结束所有正在侦听 TCP 或 UDP 端口的关联进程。 只需在中提供端口号和类型(TCP 或 UDP) fuser
命令。
例如,要结束 UDP 端口 81 上的进程,请使用 fuser
命令为:
sudo fuser -k 81/udp
同样,使用 fuser
命令终止 TCP 端口 3306 上的进程:
sudo fuser -k 3306/tcp
您可以使用 lsof 命令验证进程是否不再在目标端口上运行。
使用特定端口杀死进程的经典方式
对于那些不想使用的人 fuser
, lsof
可用于确定哪些进程正在使用某个端口,然后将此信息与 kill 命令一起使用。
例如,要终止在 TCP 端口 3306 上运行的所有进程,请使用以下命令检测进程 ID:
sudo lsof -i TCP:3306
现在用它的 pid 杀死它:
kill -9 <pid_value>
这里要注意的一件事是某些过程像 mysqld
和 apache2
使用上述命令杀死它们后可能会重新启动。 即使您使用 killall
命令,他们仍然会在一段时间后出现。
在这种情况下,我建议您使用特定于应用程序的命令来停止服务。 为了 example杀死 Apache 在 Ubuntu 上处理,使用命令:
sudo systemctl stop apache2
这将完全终止特定进程。
包起来
本文介绍了如何终止在特定端口上运行的进程。 使用 fuser 命令,您不需要知道进程详细信息。 否则,首先获取与端口关联的进程 ID 然后杀死它的经典方法也可以。