用 inotify 让博客文章热更新
2026-04-18
最开始我给博客的更新方式是「改完文章,restart 容器」。能用,但每次都要手敲命令,烦。
后来加了个 inotify,体验立刻顺了。
思路
Linux 内核的 inotify 能监听文件系统事件。配合 inotify-tools 的 inotifywait,监听 posts/ 目录:
inotifywait -m -e close_write -e moved_to -e delete /posts | while read; do
python3 /app/generate.py
done
close_write 覆盖写完触发,moved_to 移到目录触发,delete 删除触发。每次事件都重新跑一遍生成器,整个目录重写一遍——文章少的时候代价可以忽略。
一个容易忽略的点
posts 是 :ro 只读挂载进容器的。监听只读挂载的目录,事件其实来自宿主机侧的文件变动,容器内的 inotify 照样能收到。所以「只读」和「能监听」并不冲突。
现在加文章就是:丢个 .md 进去,刷新浏览器。没有 restart,没有 rebuild。这种「改完立刻看到结果」的闭环,才是让人愿意持续写下去的关键。