summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomas Chvatal <scarabeus@gentoo.org>2011-01-24 12:39:33 +0000
committerTomas Chvatal <scarabeus@gentoo.org>2011-01-24 12:39:33 +0000
commitb3d1dc41daeb8657fd2c4a9e3c3fc10403fe5fa2 (patch)
tree087224557297c3fadce04b5734cba570ec6fb931 /sys-apps/mlocate/files/mlocate.cron-r2
parentx86 stable wrt bug #352491 (diff)
downloadgentoo-2-b3d1dc41daeb8657fd2c4a9e3c3fc10403fe5fa2.tar.gz
gentoo-2-b3d1dc41daeb8657fd2c4a9e3c3fc10403fe5fa2.tar.bz2
gentoo-2-b3d1dc41daeb8657fd2c4a9e3c3fc10403fe5fa2.zip
Update cronscript and config to be more strict and flexible.
(Portage version: 2.2.0_alpha19/cvs/Linux x86_64)
Diffstat (limited to 'sys-apps/mlocate/files/mlocate.cron-r2')
-rw-r--r--sys-apps/mlocate/files/mlocate.cron-r256
1 files changed, 41 insertions, 15 deletions
diff --git a/sys-apps/mlocate/files/mlocate.cron-r2 b/sys-apps/mlocate/files/mlocate.cron-r2
index 3074f132aaa7..20b2ba7d6ab3 100644
--- a/sys-apps/mlocate/files/mlocate.cron-r2
+++ b/sys-apps/mlocate/files/mlocate.cron-r2
@@ -1,22 +1,48 @@
#! /bin/sh
+set -e
-if [ -x /usr/bin/updatedb ]
-then
- if [ -f /etc/updatedb.conf ]
- then
- args=""
- else
- args="-f proc"
+# check if we run on battery and if so then don't run
+if which on_ac_power >/dev/null 2>&1; then
+ ON_BATTERY=0
+ on_ac_power >/dev/null 2>&1 || ON_BATTERY=$?
+ if [ "${ON_BATTERY}" -eq 1 ]; then
+ exit 0
fi
+fi
- if [ -f /etc/mlocate-cron.conf ]
- then
- . /etc/mlocate-cron.conf
- fi
+# check if we are already running (lockfile)
+LOCKFILE="/var/lock/mlocate.daily.lock"
+trap "rm -f ${LOCKFILE}" EXIT
+if [ -e "${LOCKFILE}" ]; then
+ echo >&2 "Warning: \"${LOCKFILE}\" already present, not running updatedb."
+ exit 1
+else
+ touch "${LOCKFILE}"
+fi
+
+# source the user specified variables
+if [ -f /etc/mlocate-cron.conf ]; then
+ . /etc/mlocate-cron.conf
+fi
+
+# check the config file
+ARGS=""
+if [ ! -f /etc/updatedb.conf ]; then
+ nodevs=$(< /proc/filesystems awk '$1 == "nodev" && $2 != "rootfs" { print $2 }')
+ ARGS="-f ${nodevs}"
+fi
- # run on active process in case ionice isnt installed, or
- # system is really old and ionice doesnt work ...
- ionice -c ${IONICE_CLASS:-2} -n ${IONICE_PRIORITY:-7} -p $$ 2>/dev/null
+# alter the priority of the updatedb process
+if [ -x /usr/bin/renice ]; then
+ /usr/bin/renice +${NICE:-19} -p $$ > /dev/null 2>&1
+if [ -x /usr/bin/ionice ] && /usr/bin/ionice -c3 true 2>/dev/null; then
+ /usr/bin/ionice -c${IONICE_CLASS:-2} -n${IONICE_PRIORITY:-7} -p $$ > /dev/null 2>&1
+fi
- nice -n ${NICE:-10} /usr/bin/updatedb ${args}
+# run the updatedb if possible
+if [ -x /usr/bin/updatedb ]; then
+ /usr/bin/updatedb ${ARGS}
+else
+ echo >&2 "Warning: \"/usr/bin/updatedb\" is not executable, unable to run updatedb."
+ exit 0
fi