我做了什么: 我刚刚设置了节点环境,安装了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节点进程
Con*_*eer 12
您可以使用杀死所有节点进程 pkill node
或者你可以做一个ps T查看这个终端上的所有进程
然后你可以杀死一个特定的进程ID做一个kill [processID]例子:kill 24491
此外,您可以执行ps -help查看所有可用选项
小智 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 ####停止该过程。
我用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)