无法找到node.js应用程序在哪里运行并且无法将其杀死

时间:2013-11-20 09:02:22

标签: linux node.js

我做了什么: 我刚刚设置了节点环境,安装了express,创建并安装了一个快速项目

express hello
cd hello && npm install

然后使用“node app”启动应用。

环境:

yole@Yole:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 7.2 (wheezy)
Release:    7.2
Codename:   wheezy

yole@Yole:~$ node --version
v0.10.22

yole@Yole:~$ express --version
3.4.4

问题 当我想停止这个应用程序时,我使用CTRL+C,,但我找到的东西是它没有停止。然后我重新启动了服务器!我发现我仍然可以在浏览器中访问该页面。 ORZ。

我尝试过以下内容,但仍无法找到正在运行的过程。

yole@Yole:~$ killall node
node: no process found

yole@Yole:~$ ps -ef|grep node
yole      3161  2888  0 16:57 pts/1    00:00:00 grep node

yole@Yole:~$ netstat -apn|grep 3000

问题 如何找出正在运行的节点进程或如何终止它。

===== 的更新 非常奇怪的是,我的机器中的所有浏览都可以访问该网站,而在其他机器上无法访问!在停止申请之前,我只访问Chrome页面。它似乎是一个缓存问题,但缓存如何在浏览器之间共享..

6 个答案:

答案 0 :(得分:62)

列出节点进程:

$ ps -e|grep node

使用

终止进程
$kill -9 XXXX

此处XXXX是流程编号

答案 1 :(得分:17)

如果你想知道,nodejs进程如何运行,那么你可以使用这个命令

ps -aef | grep node

因此它将给出nodejs进程列表及其项目名称。当你运行multipe nodejs应用程序&你想杀死特定项目的特定进程。

上面的命令会给出类似

的输出
XXX  12886  1741  1 12:36 ?        00:00:05 /home/username/.nvm/versions/node/v9.2.0/bin/node --inspect-brk=43443 /node application running path.

所以要杀死你可以使用以下命令

kill -9 12886

所以它会杀死spcefic节点进程

答案 2 :(得分:10)

您可以使用pkill node

终止所有节点进程

或者您可以ps T查看此终端上的所有流程 那么您可以使用kill [processID]示例终止特定进程ID:kill 24491

此外,您可以ps -help查看所有可用选项

答案 3 :(得分:1)

如果所有这些杀死进程命令都不适合您,我的建议是检查您是否使用任何其他程序包来运行您的节点进程。

我有类似的问题,这是由于我使用PM2(NPM包)运行我的节点进程。 kill [processID]命令禁用进程但保持端口占用。因此,我不得不进入PM2并转储所有节点进程以再次释放端口。

答案 4 :(得分:1)

从 macOS 开始 - 使用这 3 个命令进行调查通常很有帮助:

将 6006 替换为应用程序 URL 的一个有意义的端口,就我而言,我正在寻找 localhost:6006,它不是正在运行的应用程序,但在浏览器中点击 URL 时仍然可用。

网络统计

netstat -anp tcp | grep 6006

这将报告连接的类型和运行它的命令,您可以从这里调查 TCP 状态:

tcp4       0      0  127.0.0.1.58473        127.0.0.1.6006         CLOSE_WAIT
tcp4       0      0  127.0.0.1.6006         127.0.0.1.58471        FIN_WAIT_2
tcp4       0      0  127.0.0.1.58471        127.0.0.1.6006         CLOSE_WAIT
tcp4       0      0  127.0.0.1.6006         *.*                    LISTEN
tcp4       0      0  127.0.0.1.58468        127.0.0.1.6006         TIME_WAIT

lsof

lsof -i tcp:6006

这将列出命令名称和 PID。

可选地,在此之后,您可以使用 kill 和 PID 号来停止进程运行。例如:kill #####

COMMAND     PID       USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
node       8193 username   26u  IPv4 0x8793aae78e568e01      0t0  TCP localhost:6006 (LISTEN)
Google    93430 username   67u  IPv4 0x8793aae79530c941      0t0  TCP localhost:58471->localhost:6006 (CLOSE_WAIT)
Google    93430 username   68u  IPv4 0x8793aae795d98ba1      0t0  TCP localhost:58473->localhost:6006 (CLOSE_WAIT)

最后要找到运行 node 进程的位置,您可以使用 ps 和这里,而不是像其他人提到的那样使用 node 使用您正在寻找的端口号本身:

ps

ps -aef | grep 6006

这将报告如下:

  501  8193  8179   0 24May21 ttys008    1:08.98 /Users/username/.nvm/versions/node/v12.10.0/bin/node /Users/username/Documents/repositories/react-application/node_modules/.bin/start-storybook -h localhost -p 6006
  501 77757  9725   0 12:50PM ttys013    0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn --exclude-dir=.idea --exclude-dir=.tox 6006

现在我们可以确认 lsof 命令中的 PID 与 ps 打印的 PID 匹配,我们可以看到进程何时启动以及我们看到了持久性应用程序的路径。

最后我们可以使用 kill #### 来停止进程。

答案 5 :(得分:0)

我使用技能

安装

npm i fkill-cli -g

示例

在命令行中搜索过程

fkill node

或:杀死!所有过程

fkill node

OR:使用端口8080终止进程

fkill :8080