我必须遵循计划任务每天运行的脚本。正如您应该能够从代码中看到的,它输出结果来自reflector
to /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
。