]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - etc/rc.d/savecore
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / etc / rc.d / savecore
1 #!/bin/sh
2 #
3 # $FreeBSD$
4 #
5
6 # PROVIDE: savecore
7 # REQUIRE: dumpon ddb syslogd
8 # KEYWORD: nojail
9
10 . /etc/rc.subr
11
12 name="savecore"
13 start_cmd="savecore_start"
14 start_precmd="savecore_prestart"
15 stop_cmd=":"
16
17 savecore_prestart()
18 {
19         # Quit if we have no dump device
20         case ${dumpdev} in
21         [Nn][Oo] | '')
22                 debug 'No dump device. Quitting.'
23                 return 1
24                 ;;
25         [Aa][Uu][Tt][Oo])
26                 if [ ! -L /dev/dumpdev ]; then
27                         return 1
28                 fi
29                 dumpdev=`/bin/realpath /dev/dumpdev`
30                 ;;
31         esac
32
33         # If there is no crash directory set it now
34         case ${dumpdir} in
35         '')
36                 dumpdir='/var/crash'
37                 ;;
38         [Nn][Oo])
39                 dumpdir='NO'
40                 ;;
41         esac
42
43         if [ ! -c "${dumpdev}" ]; then
44                 warn "Dump device does not exist.  Savecore not run."
45                 return 1
46         fi
47
48         if [ ! -d "${dumpdir}" ]; then
49                 warn "Dump directory does not exist.  Savecore not run."
50                 return 1
51         fi
52         return 0
53 }
54
55 savecore_start()
56 {
57         local dev
58
59         case "${dumpdev}" in
60         [Aa][Uu][Tt][Oo])
61                 dev=
62                 ;;
63         *)
64                 dev="${dumpdev}"
65                 ;;
66         esac
67
68         if savecore -C "${dev}" >/dev/null; then
69                 savecore ${savecore_flags} ${dumpdir} ${dumpdev}
70                 if checkyesno crashinfo_enable; then
71                         ${crashinfo_program} -d ${dumpdir}
72                 fi
73                 sync
74         else
75                 check_startmsgs && echo 'No core dumps found.'
76         fi
77 }
78
79 load_rc_config $name
80 run_rc_command "$1"