这是我的问题。我使用 Nodemon 在 Debian 服务器上运行 Node.JS API(因为我目前正在我的服务器上编程),并且该 API 位于使用反向代理的 Apache 虚拟主机上。
我使用 nodemon 是因为我对代码所做的每个更改都会重新启动我的 node.js 应用程序,但有时它会失败,并且会出现一个错误,提示该端口上已经有一个软件正在运行(我的端口是 7000),所以我停止 nodemon 并终止该进程。
$ sudo lsof -n -i :7000 | grep node
node 70690 root 43u IPv6 112373950 0t0 TCP *:afs3-fileserver (LISTEN)
$ sudo kill 9 70690
首先,我使用lsof
来查找在端口 7000 上运行的 PID,然后使用 kill 来终止该 PID。但如果我不使用grep
along with,lsof
它会给我提供在该端口上运行的多个 PID。
$ sudo lsof -n -i :7000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
apache2 69823 www-data 21u IPv4 112364929 0t0 TCP 127.0.0.1:55210->127.0.0.1:afs3-fileserver (CLOSE_WAIT)
apache2 69825 www-data 21u IPv4 112364926 0t0 TCP 127.0.0.1:55208->127.0.0.1:afs3-fileserver (CLOSE_WAIT)
apache2 70051 www-data 21u IPv4 112365069 0t0 TCP 127.0.0.1:55232->127.0.0.1:afs3-fileserver (CLOSE_WAIT)
node 70690 root 43u IPv6 112373950 0t0 TCP *:afs3-fileserver (LISTEN)
我想使用$ sudo lsof -ti :7000
来获取 PID 列表,然后使用它来xargs
终止所有进程。但我不知道这是否会导致问题,因为根据最新命令,其中一些进程来自 apache2。