Subversion Repositories configs

Rev

Blame | Last modification | View Log | RSS feed

# readahead-collector - readahead-collector
#
# Starts readahead-collector

start on startup

stop on started prefdm or stopped rc RUNLEVEL=[234] or runlevel [016]

kill timeout 60

script
        # do not exit on failed commands
        set +e

. /etc/sysconfig/readahead
. /etc/init.d/functions
cmdline=$(cat /proc/cmdline)

check_autorelabel()
{       
        if [ -f  /.autorelabel ] || strstr "$cmdline" autorelabel; then         
                # Check SELinux status
                selinuxfs="$(fstab_decode_str `LC_ALL=C awk '/ selinuxfs / { print $2 }' /proc/mounts`)"
                SELINUX_STATE=
                if [ -n "$selinuxfs" ] && [ "`cat /proc/self/attr/current`" != "kernel" ]; then
                    if [ -r "$selinuxfs/enforce" ] ; then
                        SELINUX_STATE=`cat "$selinuxfs/enforce"`
                    else
                        # assume enforcing if you can't read it
                        SELINUX_STATE=1
                    fi
                fi
        
                if [ -n "$SELINUX_STATE" ]; then
                        return 0
                fi
        fi
        return 1
}

check_readonly()
{
        READONLY=
        if [ -f /etc/sysconfig/readonly-root ]; then
            . /etc/sysconfig/readonly-root
        fi
        strstr "$cmdline" readonlyroot && READONLY=yes

        [ "$READONLY" = "yes" ] && return 0
        return 1
}


        [ -f /.autofsck ] && exit 0     
        [ -f /forcefsck ] && exit 0

        [ "$READAHEAD_COLLECT" != "yes" ] && exit 0

        if [ ! -f /.readahead_collect ]; then
                [ "$READAHEAD_COLLECT_ON_RPM" != "yes" ] && exit 0
                [ -f /var/lib/readahead/early.sorted ] && \    
                        [ /var/lib/readahead/early.sorted -nt /var/lib/rpm/Packages ] && \
                        exit 0
        fi

        if [ -z "$READAHEAD_DELAY_SERVICES" ]; then
            # do not delay services, so exit, if they will be started
            for service in auditd ; do
                /sbin/chkconfig --level $runlevel $service >/dev/null 2>&1 && exit 0
            done
        fi

        check_readonly && exit 0
        check_autorelabel && exit 0
        > /dev/shm/readahead-collector-started
        echo "<6>readahead-collector: starting" > /dev/kmsg
        exec /sbin/readahead-collector -f
end script

pre-stop script
        set +e

        # after prefdm is startup collect some more seconds
        . /etc/sysconfig/readahead
        sleep ${READAHEAD_EXTRA_COLLECT:-10}
        exit 0
end script

post-stop script
        # do not exit on failed commands
        set +e

        . /etc/sysconfig/readahead
        [ -f /dev/shm/readahead-collector-started ] || exit 0
        rm -f /dev/shm/readahead-collector-started
        rm -f /.readahead_collect

        # start delayed services
        runlevel=$(/sbin/runlevel| (read a b; echo $b))
        for service in "$READAHEAD_DELAY_SERVICES" ; do
                if [ -f /var/lock/subsys/delay-$runlevel-$service ]; then
                                echo "<6>readahead-collector: starting delayed service $service" > /dev/kmsg
                                /sbin/chkconfig --level $runlevel $service on 
                                /sbin/service $service start
                                rm -f /var/lock/subsys/delay-$runlevel-$service 
                fi
        done
        # process lists
        echo "<6>readahead-collector: sorting" > /dev/kmsg
        /etc/cron.daily/readahead.cron 2>/dev/null 1>&2
        echo "<6>readahead-collector: finished" > /dev/kmsg
        exit 0
end script