终止在特定端口上运行的所有服务


13

我正在尝试编写一个脚本,该脚本杀死在特定端口上运行的服务。这是我的脚本:

a=$(ps ax | grep 4990 | grep java | awk '{print $1}')
kill -9 $a

这是一个Java程序。该脚本有时可以工作,但大多数情况下会神秘地失败。

还有其他方法可以杀死端口上运行的服务吗?我的港口是4990


您的脚本还会杀死其他宠物(例如14990)上运行的Java进程。–
roaima

Answers:



4

如果要终止端口8080上运行的任何服务或进程,则首先需要找到8080端口进程标识号(PID),然后终止它。运行以下命令以找到8080端口号PID:

sudo lsof -t -i:8080

这里,

  • sudo-命令询问管理员权限(用户名和密码)。
  • lsof-文件列表(也用于列出相关进程)
  • -t-仅显示进程ID
  • -i-仅显示与Internet连接有关的过程
  • :8080-仅显示此端口号中的进程

因此,您现在可以使用以下命令轻松杀死PID:

sudo kill -9 <PID>

这里,

  • kill-命令杀死进程
  • -9-强制

您可以使用以下命令使用一个命令来杀死特定端口上的进程:

sudo kill -9 $(sudo lsof -t -i:8000)

有关更多信息,请参见以下链接 如何在Linux的特定端口上终止进程


使用kill -9使目标过程没有机会整理。考虑kill至少在最初使用plain 。
roaima

1
<?php
  $port = $argv[1]; 
  if(!empty($port) && is_numeric($port) ){
  $pid = trim(shell_exec("lsof -t -i:".$port));
  if(!empty($pid)){
     shell_exec("sudo kill -9 ".$pid);
     echo "pid : ".$pid."  killed which is listened port : ".$port."\xA";
  }
  else{
     echo " [X] no such process found for pid : ".$port."\xA";
  }
  }
  else{ 
     echo " invalid pid \xA";
  }
?>
  1. 创建一个PHP文件 kill.php
  2. 使用所需的端口运行php文件 $ php kill.php 8088

1
使用kill -9使目标过程没有机会整理。考虑kill至少在最初使用plain 。
roaima

+1,用于将PHP用于此任务。
Bananguin

@ G-Man错误地添加了它
nivas

@Bananguin杀死给定端口的确切进程ID是在与詹金斯一起执行捆绑进程时使用的
nivas

lsof -t -i:port_id在构建过程中运行脚本文件及其包含命令时,port_idor process idport_id可能为空,这时我们会遇到一些命令错误,以避免使用这种错误。在这里,我可以杀死给定端口的确切进程ID
nivas,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.