我尝试在tomcat /bin目录下使用。/shutdown.sh关闭tomcat。但发现服务器没有正确关闭。因此我无法重新启动我的tomcat运行在端口8080上。

我想终止在8080上运行的tomcat进程。我首先想要在特定端口(8080)上运行的进程列表,以便选择要终止哪个进程。


当前回答

选择端口号并应用netstat命令中的grep,如下所示

netstat -ap | grep :7070

控制台输出

tcp 0 0:::7070:::* LISTEN 3332/java

根据PID(进程标识号)终止服务

kill -9 3332

其他回答

使用这个脚本,它比其他选项更友好,检查端口是否实际在使用。

使用方法:openport 1234

openport() {
  # sed = second line https://stackoverflow.com/a/1429628/152711
  # awk = second word https://unix.stackexchange.com/a/174038
  processId=$(lsof -i tcp:$1 | sed -n 2p | awk '{print $2}')
  if [ ! -z "$processId" ] # Non-null https://www.cyberciti.biz/faq/bash-shell-find-out-if-a-variable-has-null-value-or-not/
  then
    echo Killing $processId
    kill -9 $processId
  else
    echo No process found
  fi
}

Linux:如果你知道端口,你可以使用这个命令:

netstat -plten | grep LISTEN | grep 8080

AIX:

netstat -Aan | grep LISTEN | grep 8080

然后使用第一列(例如:f100050000b05bb8)并运行以下命令:

rmsock f100050000b05bb8 tcpcb

杀死进程。

我正在Yocto Linux系统上工作,该系统具有有限的可用Linux工具集。我想终止使用特定端口的进程(1883年)。

首先,我使用以下命令查看我们正在侦听的端口:

root@root:~# netstat -lt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       
tcp        0      0 0.0.0.0:hostmon         0.0.0.0:*               LISTEN      
tcp        0      0 localhost.localdomain:domain 0.0.0.0:*               LISTEN      
tcp        0      0 0.0.0.0:9080            0.0.0.0:*               LISTEN      
tcp        0      0 0.0.0.0:1883            0.0.0.0:*               LISTEN      
tcp        0      0 :::hostmon              :::*                    LISTEN      
tcp        0      0 localhost:domain        :::*                    LISTEN      
tcp        0      0 :::ssh                  :::*                    LISTEN      
tcp        0      0 :::1883                 :::*                    LISTEN      

接下来,我找到了使用端口1883的进程的名称,方法如下:

root@root:~# fuser 1883/tcp
290 
root@root:~# ps | grep 290
  290 mosquitt 25508 S    /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
12141 root      8444 S    grep 290

正如我们在上面看到的,使用端口1883的是程序/usr/sbin/ mosquito。

最后,我终止了这个过程:

root@root:~# systemctl stop mosquitto

我使用systemctl,因为在这种情况下,它是一个systemd服务。

简单地运行这个命令。别忘了用你的端口替换端口号;)

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

要知道某个端口上运行的服务的pid:

netstat -tulnap | grep :*port_num*

您将得到该过程的描述。现在使用kill或kill -9 pid。容易死亡。

e.g

Netstat -ap | grep:8080

tcp6       0      0 :::8080       :::*    LISTEN      1880/java 

Now:

kill -9 1880

记住以root用户运行所有命令