我做了什么: 我刚刚设置了节点环境,安装了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页面。它似乎是一个缓存问题,但缓存如何在浏览器之间共享..
答案 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