diff options
Diffstat (limited to 'sys-apps/mlocate/files/mlocate.cron-r2')
-rw-r--r-- | sys-apps/mlocate/files/mlocate.cron-r2 | 56 |
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 |