阻止 cron 脚本用无效数据破坏我的镜像列表

阻止 cron 脚本用无效数据破坏我的镜像列表

我必须遵循计划任务每天运行的脚本。正如您应该能够从代码中看到的,它输出结果来自reflectorto /etc/pacman.d/mirrorlist

$ cat /etc/cron.daily/update-mirrorlist
#!/bin/bash

reflector -l 5 -r -o /etc/pacman.d/mirrorlist

有时,reflector输出一个空文件,因此输出无效镜像列表被建造。

如何修改上面的脚本以仅写入/etc/pacman.d/mirrorlist 如果有有效的输出relfector

答案1

最好先积累数据,然后将其移动到位。这样,即使数据累加器程序正在运行,目标文件也将始终有效。

set -e
target=/etc/pacman.d/mirrorlist
reflector -l 5 -r -o "$target.tmp"
mv -f -- "$target.tmp" "$target"

如果reflector未通过返回非零状态正确报告错误,请在命令前添加您自己的验证测试mv,例如test -s "$target.tmp"测试文件是否不为空。

如果要保留旧版本的备份,请在命令ln -f -- "$target" "$target.old" || true前添加mv

相关内容