# 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