原始操作记录 #
近日发现一个 Python 写的文件监控同步程序挂了,检查日志发现报错:
[2020-11-17 13:42:20,645 pyinotify ERROR] add_watch: cannot watch /*/*/*/* WD=-1, Errno=No space left on device (ENOSPC)Google 之后发现是系统 watches 配额用尽,需要增大 watches 配额,默认 8192,增大 5 倍试试吧。
编辑 sysctl.conf 文件,然后更新:
echo fs.inotify.max_user_watches=40960 >> /etc/sysctl.conf
sysctl -p再次重启 Python 脚本,正常运行。
另外,如果磁盘空间用尽,或者 Inode 节点用尽也会报此错误,df 命令可以查询使用情况。
查看存储空间:
df -h查看 Inode 节点:
df -i关键理解 #
这类笔记最重要的不是把命令背下来,而是弄清楚它解决的是什么问题、依赖什么环境、执行后会改变什么。以后再次遇到类似情况时,可以先根据标题判断问题方向,再对照原始命令确认是否适合当前系统版本。
如果命令中包含具体路径、网卡名、磁盘名、进程名、IP 地址、端口号、用户名称或软件版本,实际执行时都要替换成自己环境中的真实值。不要直接照抄示例里的占位内容。
验证方法 #
验证时可以先准备一个最小示例,把输入、输出和异常情况都跑一遍。对于脚本类工具,建议先在临时目录或测试文件上执行,确认结果正确后再处理真实数据。
如果验证结果和预期不一致,建议先不要继续叠加更多修改,而是回到第一步检查环境差异。很多问题并不是命令本身错误,而是当前系统版本、软件版本、路径名称或权限条件与原记录不一致。
注意事项 #
涉及文件批量处理、系统命令调用、进程池线程池或第三方包时,要特别注意异常处理和边界条件,避免脚本中途失败后留下半成品数据。
对于旧文章中的命令,还要考虑软件版本变化。浏览器 flags、Linux 发行版默认配置、Python 包版本、Windows 系统设置都会随着时间调整。再次使用时,最好把这篇记录当成排查思路,而不是绝对固定的唯一答案。
小结 #
这篇记录可以作为一个快速索引:先看标题确认问题类型,再看原始命令找到核心操作,最后结合验证方法确认是否真正生效。这样既保留了早期备忘的简洁性,也能减少以后重复排查的时间。