前一段时间发现 mirrors 缓存不一致的报警又开始增多了,发现是从一开始就有的一个 bug:更新 incrontab 的脚本没有在缓存文件列表更新后执行,这是因为主控脚本中用了 ./update-incrontab.sh … 的写法,而 crontab 执行时的当前目录(pwd)并非脚本所在目录,因此这些命令从来就没有成功执行过。由于之前测试时都是在脚本所在目录中执行的,测试并未发现 bug。这样,缓存文件列表中新增的文件就不受 incrontab 监控,需要等整个源同步完成后再删除,因此会出现较长时间的缓存不一致。

解决方法:改成


$(dirname $0)/update-incrontab.sh ...

顺便解决了 syslog 一直写入 /var/log/syslog.1 的问题,现在这个文件已经长到 18G 了。做法很简单(但没人管的话永远也不会被解决):


sudo service rsyslogd rotate