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

yuy*_*007 27 linux node.js

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

express hello
cd hello && npm install
Run Code Online (Sandbox Code Playgroud)

然后用" 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
Run Code Online (Sandbox Code Playgroud)

问题 当我想要停止这个应用程序时,我使用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
Run Code Online (Sandbox Code Playgroud)

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

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

Dam*_*ran 68

列表节点进程:

$ ps -e|grep node
Run Code Online (Sandbox Code Playgroud)

使用杀死进程

$kill -9 XXXX
Run Code Online (Sandbox Code Playgroud)

这里XXXX是进程号


小智 27

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

ps -aef | grep node
Run Code Online (Sandbox Code Playgroud)

因此它将使用它的项目名称给出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.
Run Code Online (Sandbox Code Playgroud)

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

kill -9 12886
Run Code Online (Sandbox Code Playgroud)

所以它会杀死spcefic节点进程

  • 我喜欢它,因为它提供了节点和执行脚本的完整路径。 (2认同)

Con*_*eer 12

您可以使用杀死所有节点进程 pkill node

或者你可以做一个ps T查看这个终端上的所有进程
然后你可以杀死一个特定的进程ID做一个kill [processID]例子:kill 24491

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

  • pkill node节省了我很多时间 (2认同)

小智 7

从 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
Run Code Online (Sandbox Code Playgroud)

拉索夫

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)
Run Code Online (Sandbox Code Playgroud)

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

附注

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

Run Code Online (Sandbox Code Playgroud)

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

最后我们可以用来kill ####停止该过程。


Joh*_*sma 5

我用fkill

安装

npm i fkill-cli -g
Run Code Online (Sandbox Code Playgroud)

例子

命令行中的搜索过程

fkill
Run Code Online (Sandbox Code Playgroud)

或者:杀!所有流程

fkill node
Run Code Online (Sandbox Code Playgroud)

或者:使用端口 8080 终止进程

fkill :8080
Run Code Online (Sandbox Code Playgroud)