4 |
- |
1 |
# readahead-collector - readahead-collector
|
|
|
2 |
#
|
|
|
3 |
# Starts readahead-collector
|
|
|
4 |
|
|
|
5 |
start on startup
|
|
|
6 |
|
|
|
7 |
stop on started prefdm or stopped rc RUNLEVEL=[234] or runlevel [016]
|
|
|
8 |
|
|
|
9 |
kill timeout 60
|
|
|
10 |
|
|
|
11 |
script
|
|
|
12 |
# do not exit on failed commands
|
|
|
13 |
set +e
|
|
|
14 |
|
|
|
15 |
. /etc/sysconfig/readahead
|
|
|
16 |
. /etc/init.d/functions
|
|
|
17 |
cmdline=$(cat /proc/cmdline)
|
|
|
18 |
|
|
|
19 |
check_autorelabel()
|
|
|
20 |
{
|
|
|
21 |
if [ -f /.autorelabel ] || strstr "$cmdline" autorelabel; then
|
|
|
22 |
# Check SELinux status
|
|
|
23 |
selinuxfs="$(fstab_decode_str `LC_ALL=C awk '/ selinuxfs / { print $2 }' /proc/mounts`)"
|
|
|
24 |
SELINUX_STATE=
|
|
|
25 |
if [ -n "$selinuxfs" ] && [ "`cat /proc/self/attr/current`" != "kernel" ]; then
|
|
|
26 |
if [ -r "$selinuxfs/enforce" ] ; then
|
|
|
27 |
SELINUX_STATE=`cat "$selinuxfs/enforce"`
|
|
|
28 |
else
|
|
|
29 |
# assume enforcing if you can't read it
|
|
|
30 |
SELINUX_STATE=1
|
|
|
31 |
fi
|
|
|
32 |
fi
|
|
|
33 |
|
|
|
34 |
if [ -n "$SELINUX_STATE" ]; then
|
|
|
35 |
return 0
|
|
|
36 |
fi
|
|
|
37 |
fi
|
|
|
38 |
return 1
|
|
|
39 |
}
|
|
|
40 |
|
|
|
41 |
check_readonly()
|
|
|
42 |
{
|
|
|
43 |
READONLY=
|
|
|
44 |
if [ -f /etc/sysconfig/readonly-root ]; then
|
|
|
45 |
. /etc/sysconfig/readonly-root
|
|
|
46 |
fi
|
|
|
47 |
strstr "$cmdline" readonlyroot && READONLY=yes
|
|
|
48 |
|
|
|
49 |
[ "$READONLY" = "yes" ] && return 0
|
|
|
50 |
return 1
|
|
|
51 |
}
|
|
|
52 |
|
|
|
53 |
|
|
|
54 |
[ -f /.autofsck ] && exit 0
|
|
|
55 |
[ -f /forcefsck ] && exit 0
|
|
|
56 |
|
|
|
57 |
[ "$READAHEAD_COLLECT" != "yes" ] && exit 0
|
|
|
58 |
|
|
|
59 |
if [ ! -f /.readahead_collect ]; then
|
|
|
60 |
[ "$READAHEAD_COLLECT_ON_RPM" != "yes" ] && exit 0
|
|
|
61 |
[ -f /var/lib/readahead/early.sorted ] && \
|
|
|
62 |
[ /var/lib/readahead/early.sorted -nt /var/lib/rpm/Packages ] && \
|
|
|
63 |
exit 0
|
|
|
64 |
fi
|
|
|
65 |
|
|
|
66 |
if [ -z "$READAHEAD_DELAY_SERVICES" ]; then
|
|
|
67 |
# do not delay services, so exit, if they will be started
|
|
|
68 |
for service in auditd ; do
|
|
|
69 |
/sbin/chkconfig --level $runlevel $service >/dev/null 2>&1 && exit 0
|
|
|
70 |
done
|
|
|
71 |
fi
|
|
|
72 |
|
|
|
73 |
check_readonly && exit 0
|
|
|
74 |
check_autorelabel && exit 0
|
|
|
75 |
> /dev/shm/readahead-collector-started
|
|
|
76 |
echo "<6>readahead-collector: starting" > /dev/kmsg
|
|
|
77 |
exec /sbin/readahead-collector -f
|
|
|
78 |
end script
|
|
|
79 |
|
|
|
80 |
pre-stop script
|
|
|
81 |
set +e
|
|
|
82 |
|
|
|
83 |
# after prefdm is startup collect some more seconds
|
|
|
84 |
. /etc/sysconfig/readahead
|
|
|
85 |
sleep ${READAHEAD_EXTRA_COLLECT:-10}
|
|
|
86 |
exit 0
|
|
|
87 |
end script
|
|
|
88 |
|
|
|
89 |
post-stop script
|
|
|
90 |
# do not exit on failed commands
|
|
|
91 |
set +e
|
|
|
92 |
|
|
|
93 |
. /etc/sysconfig/readahead
|
|
|
94 |
[ -f /dev/shm/readahead-collector-started ] || exit 0
|
|
|
95 |
rm -f /dev/shm/readahead-collector-started
|
|
|
96 |
rm -f /.readahead_collect
|
|
|
97 |
|
|
|
98 |
# start delayed services
|
|
|
99 |
runlevel=$(/sbin/runlevel| (read a b; echo $b))
|
|
|
100 |
for service in "$READAHEAD_DELAY_SERVICES" ; do
|
|
|
101 |
if [ -f /var/lock/subsys/delay-$runlevel-$service ]; then
|
|
|
102 |
echo "<6>readahead-collector: starting delayed service $service" > /dev/kmsg
|
|
|
103 |
/sbin/chkconfig --level $runlevel $service on
|
|
|
104 |
/sbin/service $service start
|
|
|
105 |
rm -f /var/lock/subsys/delay-$runlevel-$service
|
|
|
106 |
fi
|
|
|
107 |
done
|
|
|
108 |
# process lists
|
|
|
109 |
echo "<6>readahead-collector: sorting" > /dev/kmsg
|
|
|
110 |
/etc/cron.daily/readahead.cron 2>/dev/null 1>&2
|
|
|
111 |
echo "<6>readahead-collector: finished" > /dev/kmsg
|
|
|
112 |
exit 0
|
|
|
113 |
end script
|