]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - etc/rc.d/bgfsck
Merge branch 'releng/11.3' into releng-CDN/11.3
[FreeBSD/FreeBSD.git] / etc / rc.d / bgfsck
1 #!/bin/sh
2 #
3 # $FreeBSD$
4 #
5
6 # PROVIDE: bgfsck
7 # REQUIRE: cron devfs syslogd
8 # KEYWORD: nojail
9
10 . /etc/rc.subr
11
12 name="background_fsck"
13 desc="Run fsck in background"
14 rcvar="background_fsck"
15 start_cmd="bgfsck_start"
16 start_precmd="bgfsck_start_precmd"
17 stop_cmd=":"
18
19 bgfsck_start_precmd()
20 {
21         if [ $($ID -u) != 0 ]; then
22                 err 1 "Must be root."
23         fi
24 }
25
26 bgfsck_start()
27 {
28         : ${background_fsck_delay=0}
29         if [ -n "${rc_force}" ]; then
30                 background_fsck_delay=0
31         fi
32         if [ ${background_fsck_delay} -lt 0 ]; then
33                 warn "Background file system checks delayed indefinitely"
34                 return 0
35         fi
36
37         bgfsck_msg='Starting background file system checks'
38         if [ "${background_fsck_delay}" -gt 0 ]; then
39                 bgfsck_msg="${bgfsck_msg} in ${background_fsck_delay} seconds"
40         fi
41         if [ -z "${rc_force}" ]; then
42                 check_startmsgs && echo "${bgfsck_msg}."
43         fi
44
45         (sleep ${background_fsck_delay}; nice -4 fsck -B -p) 2>&1 | \
46             logger -p daemon.notice -t fsck &
47 }
48
49 load_rc_config $name
50 run_rc_command "$1"