나는 따라야 해예약 된 일들매일 실행할 스크립트입니다. 코드에서 볼 수 있듯이 결과는 에서 로 출력 reflector
됩니다 /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
0이 아닌 상태를 반환하여 오류가 올바르게 보고되지 않으면 명령 앞에 파일 이 비어 있지 않은지 테스트하는 mv
것과 같은 고유한 유효성 검사 테스트를 추가하세요.test -s "$target.tmp"
이전 버전의 백업을 유지하려면 명령 ln -f -- "$target" "$target.old" || true
앞에 이것을 추가하십시오 mv
.