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