如何让PM2监听Vagrant共享目录的变化?

How to get PM2 to watch for changes in Vagrant's shared directory?

我正在使用 Vagrant 1.8.1 and VirtualBox 5.0.16r105871 并配置一个 ubuntu/wily64 盒子。我在客户机上安装了 Node 4.4.3。我使用以下过程启动服务器并 运行.

cd /vagrant
npm install
npm install -g pm2
pm2 startup ubuntu
sudo su -c "env PATH=$PATH:/usr/bin pm2 startup ubuntu -u vagrant"
pm2 start process.json
pm2 save

我尝试使用 --watch 选项启动 PM2,但没有用。 我尝试使用 PM2 进程配置,但只有当我在来宾计算机上触摸文件时它才有效。

{
  "apps": [{
    "name": "mean-boilerplate",
    "script": "index.js",
    "watch": ["index.js"],
    "env": {
      "NODE_ENV": "development",
    }
  }]
}

任何想法如何让它与 PM2 一起工作?或者我应该使用不同的 method/module.

当我需要监视驻留在主机上但安装在 Vagrant VM 中的文件夹(如共享目录)时,usePolling 选项使监视功能对我有用。尝试像这样将其添加到您的 JSON 配置中:

{
  "apps": [{
    "name": "mean-boilerplate",
    "script": "index.js",
    "watch" : ["index.js"],
    "watch_options" : {"usePolling": true},
    "env": {
      "NODE_ENV": "development",
    }
  }]
}

我也遇到过类似的问题,现在已经解决了。

我正在使用 vagrant 2.2.0 并使用 ubuntu/xenial64 box(当前版本为 16.04)。

起初,我尝试添加这个选项

"watch_options" : {"usePolling": true},

有更多与轮询时间相关的选项(interval 和 binaryInterval)(参考:https://github.com/paulmillr/chokidar#api)。

由于默认间隔太快,有人建议设置更宽松的间隔。

但是,即使我设置了足够的时间间隔,pm2 也会消耗过多的计算机资源并且我的计算机风扇节流。

已有问题https://github.com/Unitech/pm2/issues/1314

我不知道为什么 usePolling 效率低下。但是正如作者所说,usePolling watch files over the network,我想这就是问题的原因,我猜。

因此,我放弃了 usePolling 选项,并找到另一种方法来通知从主机到客户机的文件更改。

我找到的解决方案是,使用 'vagrant-fsnotify' 插件。 https://github.com/adrienkohlbecker/vagrant-fsnotify

自述文件页面中详细描述了插件的用法。

结果是?成功的。我没有监控硬件资源,但由于我的风扇沉默,我认为它已经解决了。