freebsd-skq/etc/rc.d/savecore
bapt 72855a7c5d Add a savecore_enable variable support for the savecore rc script
By default set to 'YES' so it does not change the current behaviour for users,
this variable allows to decide to not extract crach dumps from the dump
device at boot time by setting it to "NO" in rc.conf.

Sponsored by:	Gandi.net
2016-04-29 12:23:56 +00:00

83 lines
1.3 KiB
Bash
Executable File

#!/bin/sh
#
# $FreeBSD$
#
# PROVIDE: savecore
# REQUIRE: dumpon ddb syslogd
# KEYWORD: nojail
. /etc/rc.subr
name="savecore"
rcvar="savecore_enable"
desc="Save a core dump of the operating system"
start_cmd="savecore_start"
start_precmd="savecore_prestart"
stop_cmd=":"
savecore_prestart()
{
# Quit if we have no dump device
case ${dumpdev} in
[Nn][Oo] | '')
debug 'No dump device. Quitting.'
return 1
;;
[Aa][Uu][Tt][Oo])
if [ ! -L /dev/dumpdev ]; then
return 1
fi
dumpdev=`/bin/realpath /dev/dumpdev`
;;
esac
# If there is no crash directory set it now
case ${dumpdir} in
'')
dumpdir='/var/crash'
;;
[Nn][Oo])
dumpdir='NO'
;;
esac
if [ ! -c "${dumpdev}" ]; then
warn "Dump device does not exist. Savecore not run."
return 1
fi
if [ ! -d "${dumpdir}" ]; then
warn "Dump directory does not exist. Savecore not run."
return 1
fi
return 0
}
savecore_start()
{
local dev
case "${dumpdev}" in
[Aa][Uu][Tt][Oo])
dev=
;;
*)
dev="${dumpdev}"
;;
esac
if savecore -C "${dev}" >/dev/null; then
savecore ${savecore_flags} ${dumpdir} ${dumpdev}
if checkyesno crashinfo_enable; then
${crashinfo_program} -d ${dumpdir}
fi
sync
else
check_startmsgs && echo 'No core dumps found.'
fi
}
load_rc_config $name
run_rc_command "$1"