综合编程

npm 的 update-notifier

微信扫一扫,分享到朋友圈

npm 的 update-notifier
0

线上某些基于 nodejs 的服务时不时看到这种进程,而且一直都在:

root     25997     1  0 Mar25 ?        00:00:00 /root/.nvm/versions/node/v10.14.2/bin/node /root/.nvm/versions/node/v10.14.2/lib/node_modules/npm/node_modules/update-notifier/check.js {"pkg":{"name":"npm","version":"6.4.1"}}

经过检查判断,这是 npm 带来的一个依赖模块,用来做版本检测。

检查 npm 和 update-notifier 的源码之后,可以了解到其工作方式:

  1. npm 每次调用都会判断是否需要检查版本号

    $HOME/.config/configstore/update-notifier-npm.json
    update-notifier
    
  2. 然后将自己的 package.json 数据做参数,传递给 update-notifier
  3. update-notifiler 提取出 name 和 version,然后创建一个新的进程来获取最新版本,判断是否需要升级

至于那几个进程为什么滞留,就不知道原因了,可能是有 BUG。

线上服务还是稳定第一,没有问题就不轻易升级。

直接对那几个 update-notifier 进程 kill -9
,并 npm config set update-notifier false --global
一下。

实验:手动触发版本检查

sudo npm i -g update-notifier
export NODE_PATH=$(npm root --quiet -g)

echo '{"optOut": false, "lastUpdateCheck": 0}' > ~/.config/configstore/update-notifier-npm.json
node -e "const pkg=require('/usr/lib/nodejs/npm/package.json');console.log(require('update-notifier')({pkg}));"

echo '{"optOut": false, "lastUpdateCheck": 0}' > ~/.config/configstore/update-notifier-npm.json
npm search npm

配合 Python 写的进程监控脚本,可以看到下面这种进程出现,和 update-notifier 中的逻辑一致。

USER         PID  %MEM     VSZ     RSS       NICE STATUS  START   TIME  CMDLINE
catroll    10714   0.3  630876   17244          ?      R  14:32  00:00  /usr/bin/node /usr/local/lib/node_modules/npm/node_modules/update-notifier/check.js {"pkg":{"name":"npm","version":"6.8.0"}}
阅读原文...

微信扫一扫,分享到朋友圈

npm 的 update-notifier
0
Avatar

从起诉、反诉到和解 苹果高通法律大战共持续了726天

上一篇

创造产品锚点,打造信息爆炸时代的成功营销

下一篇

评论已经被关闭。

插入图片

热门分类

往期推荐

npm 的 update-notifier

长按储存图像,分享给朋友