Parar o script cron de destruir minha lista de espelhos com dados inválidos

2

Eu tenho que seguir o script cron que é executado diariamente. Como você deve conseguir ver a partir do código, ele exibe os resultados de reflector a /etc/pacman.d/mirrorlist .

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

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

Às vezes, reflector gera um arquivo vazio e, portanto, uma mirrorlist inválida é criada.

Como posso modificar o script acima para gravar apenas em /etc/pacman.d/mirrorlist SE existe uma saída válida de relfector ?

    
por Stefan 25.10.2010 / 19:17

1 resposta

4

É uma boa ideia primeiro acumular os dados e depois colocá-los no lugar. Dessa forma, o arquivo de destino sempre será válido, mesmo enquanto o programa acumulador de dados estiver em execução.

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

Se reflector não relatar corretamente erros retornando um status diferente de zero, adicione seu próprio teste de validação antes do comando mv , por exemplo, test -s "$target.tmp" para testar se o arquivo não está vazio.

Se você quiser manter um backup da versão antiga, adicione ln -f -- "$target" "$target.old" || true antes do comando mv .

    
por 25.10.2010 / 20:04