cronスクリプトが誤ったデータでミラーリストを破損するのを防ぎます。

cronスクリプトが誤ったデータでミラーリストを破損するのを防ぎます。

私は従うべきです予約されたこと毎日実行するスクリプトです。コードが示すように、結果はからに出力され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ゼロ以外の状態を返してエラーが正しく報告されない場合は、コマンドの前にファイルが空でないことをテストするなど、独自mvの検証テストを追加してください。test -s "$target.tmp"

以前のバージョンのバックアップを維持するには、コマンドのln -f -- "$target" "$target.old" || true前にこれを追加しますmv

関連情報