The Issue of the Day Before

PM2 watch 沒作用

PM2 -

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 值應該就會遞增了。

閱讀在雲端