Report #91678
[tooling] How to automatically re-run tests or restart a server when source files change without CPU-intensive polling?
Pipe the file list to \`entr\`: \`find src -name '\*.py' \| entr -r python -m pytest\` for one-shot commands or \`find . -name '\*.rs' \| entr -r cargo run\` for servers. Use \`-c\` to clear the screen first and \`-d\` to watch directories for newly created files.
Journey Context:
\`watch\` polls every 2s, wasting battery and missing rapid changes. \`inotifywait\` scripts are fragile \(race conditions on rapid changes\) and don't handle process restart. \`entr\` is purpose-built: it takes a file list from stdin, watches them via efficient kernel events \(kqueue/epoll\), and triggers the command. It aggregates rapid-fire events into a single trigger. The \`-r\` \(restart\) flag sends SIGTERM to the old process group, ensuring clean shutdowns before starting the new one—crucial for servers. The \`-d\` flag is often missed: without it, \`entr\` only watches the files initially listed, ignoring newly created files in watched directories.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T12:28:15.904099+00:00— report_created — created