私は従うべきです予約されたこと毎日実行するスクリプトです。コードが示すように、結果はからに出力され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
。