From 0e9dc9f69e290fe352de7b2bbd288890a78eced5 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Wed, 25 Aug 2010 11:30:42 -0500 Subject: Add update-web-db cronjob This has been untracked by version control for a while on gerolde in both the cron-jobs directory and in /etc/cron.hourly/. Add it here so we can make changes and know what is going on. This is an improved script over what we currently have. It is one script instead of two, and it does things a little smarter with the logging. Signed-off-by: Dan McGee --- cron-jobs/update-web-db | 47 +++++++++++++++++++++++++++++++++++++++++++ cron-jobs/update-web-files-db | 1 + 2 files changed, 48 insertions(+) create mode 100755 cron-jobs/update-web-db create mode 120000 cron-jobs/update-web-files-db diff --git a/cron-jobs/update-web-db b/cron-jobs/update-web-db new file mode 100755 index 0000000..8631a04 --- /dev/null +++ b/cron-jobs/update-web-db @@ -0,0 +1,47 @@ +#!/bin/bash + +# run at nice 5. it can churn quite a bit of cpu after all. +renice +5 -p $$ > /dev/null + +# setup paths +SPATH="/srv/http/archweb" +ARCHES="i686 x86_64" +# having "more important repos" last should make [core] trickle to the top of +# the updates list each hour rather than being overwhelmed by big [extra] and +# [community] updates +REPOS="community-testing multilib community extra testing core" +LOGOUT="/tmp/archweb_update.log" + +# figure out what operation to perform +cmd="$(basename $0)" +if [[ $cmd != "update-web-db" && $cmd != "update-web-files-db" ]]; then + echo "Invalid command name '$cmd' specified!" + exit 1 +fi + +echo "$cmd: Updating DB at $(date)" >> "${LOGOUT}" + +## do the dirty, then output the result to a file. +cd $SPATH +for arch in ${ARCHES}; do + for repo in ${REPOS}; do + echo "Updating ${repo}-${arch}" + case "$cmd" in + update-web-db) + dbfile="/srv/ftp/${repo}/os/${arch}/${repo}.db.tar.gz" + flags="" ;; + update-web-files-db) + dbfile="/srv/ftp/${repo}/os/${arch}/${repo}.files.tar.gz" + flags="--filesonly" ;; + esac + ./manage.py reporead ${flags} ${arch} ${dbfile} + echo "" + done +done >> "${LOGOUT}" 2>&1 + +echo "" >> "${LOGOUT}" + +# rotate the file if it is getting big (> 10M), overwriting any old backup +if [[ $(stat -c%s update-web-db) -gt 10485760 ]]; then + mv "${LOGOUT}" "${LOGOUT}.old" +fi diff --git a/cron-jobs/update-web-files-db b/cron-jobs/update-web-files-db new file mode 120000 index 0000000..0c2c4fa --- /dev/null +++ b/cron-jobs/update-web-files-db @@ -0,0 +1 @@ +update-web-db \ No newline at end of file -- cgit v1.2.3-24-g4f1b