我正在尝试编写一个脚本来终止在特定端口上运行的服务。这是我的脚本:
a=$(ps ax | grep 4990 | grep java | awk '{print $1}')
kill -9 $a
这是一个java程序。该脚本有时会起作用,但大多数时候都会神秘地失败。
还有其他方法可以终止端口上运行的服务吗?我的港口是4990
.
答案1
你可以试试fuser
:
fuser -k 4990/tcp
或者使用lsof
获取进程ID,然后提供给kill
:
kill $(sudo lsof -t -i:4990)
答案2
如果您想终止在端口号 8080 上运行的任何服务或进程,那么首先您需要找到 8080 端口进程标识号 (PID),然后终止它。运行以下命令查找 8080 端口号 PID:
sudo lsof -t -i:8080
这里,
- 须藤- 询问管理员权限的命令(用户 ID 和密码)。
- 拉索夫- 文件列表(也用于列出相关进程)
- -t- 只显示进程ID
- -我- 仅显示与互联网连接相关的进程
- :8080- 仅显示该端口号中的进程
所以你现在可以使用以下命令轻松杀死你的 PID:
sudo kill -9 <PID>
这里,
- Kill - 终止进程的命令
- -9——强力
您可以使用一个命令来终止特定端口上的进程,使用以下命令:
sudo kill -9 $(sudo lsof -t -i:8000)
更多内容您可以查看以下链接 如何杀死Linux上特定端口上的进程
答案3
<?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";
}
?>
- 创建一个 php 文件
kill.php
- 使用所需端口运行 php 文件
$ php kill.php 8088