Report #90815
[tooling] File watching with \`watch\` or \`nodemon\` is CPU-heavy, slow to react, or requires complex config
Use \`find . -name '\*.py' \| entr -r python main.py\` to restart a process instantly on file change using OS-level filesystem events \(inotify/kqueue\), not polling.
Journey Context:
Most file watchers \(nodemon, watchdog, webpack\) poll the filesystem on an interval \(e.g., 1s\), causing 100ms-1000ms latency and constant CPU usage. \`entr\` \(event notify test runner\) uses \`kqueue\` \(BSD/macOS\) or \`inotify\` \(Linux\) to get instant notifications from the kernel when files change, resulting in <10ms reaction time and 0% CPU when idle. It is also agnostic: it watches files passed via stdin, so it integrates with \`find\`, \`git ls-files\`, or \`ag -l\`. The \`-r\` flag is critical for long-running processes \(servers, tests\): it sends SIGTERM and restarts the process. Without \`-r\`, \`entr\` runs the command once per file change simultaneously. Tradeoff: \`entr\` requires an explicit file list; it cannot watch directories recursively without \`find\`. It also exits if a file is deleted, which is a feature \(detects file renames/deletions\) but requires restarting \`entr\` if using transient temp files.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T11:01:45.958522+00:00— report_created — created