PM2 watch 沒作用
PM2 nodejs linux -echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
Why
當使用 PM2 而發現 watch 無法正常工作時,可以使用 pm2 report 檢查一下錯誤訊息。
pm2 report 可以看到目前的設定與 log。你也可以使用 cat ~/.pm2/pm2.log 直接看 log 檔。如果在 log 中有看 ENOSPC 錯誤。
大概像下面這樣
~/.pm2/pm2.log
PM2 | 2019-05-17T02:48:25: PM2 error: Error: watch /you/watch/path/file ENOSPC PM2 | at _errnoException (util.js:992:11) PM2 | at FSWatcher.start (fs.js:1382:19) PM2 | at Object.fs.watch (fs.js:1408:11)
這可能是因為 inotify 這個 process 監看太多文件。設定一個較大的 max_user_watches 值,可以解決問題。
How
使用
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
再重啟 pm2 restart <your-app-name> 後, 使用 touch <your-watch-file> 變動檔案試試看。
 pm2 ls 時 <your-app-name> 的 restart 值應該就會遞增了。