178344Sobrien#!/bin/sh 278344Sobrien# 398184Sgordon# $FreeBSD$ 478344Sobrien# 578344Sobrien 678344Sobrien# PROVIDE: savecore 7208307Sdougb# REQUIRE: dumpon ddb syslogd 8136224Smtm# KEYWORD: nojail 978344Sobrien 1078344Sobrien. /etc/rc.subr 1178344Sobrien 1278344Sobrienname="savecore" 13298784Sbaptrcvar="savecore_enable" 14298514Slmedesc="Save a core dump of the operating system" 1578344Sobrienstart_cmd="savecore_start" 1698184Sgordonstart_precmd="savecore_prestart" 1778344Sobrienstop_cmd=":" 1878344Sobrien 1998184Sgordonsavecore_prestart() 2078344Sobrien{ 21124622Smtm # Quit if we have no dump device 22124622Smtm case ${dumpdev} in 23124622Smtm [Nn][Oo] | '') 24124622Smtm debug 'No dump device. Quitting.' 25124622Smtm return 1 26124622Smtm ;; 27136684Sthomas [Aa][Uu][Tt][Oo]) 28248488Scperciva if [ ! -L /dev/dumpdev ]; then 29248487Scperciva return 1 30248487Scperciva fi 31136901Sdes dumpdev=`/bin/realpath /dev/dumpdev` 32136684Sthomas ;; 33124622Smtm esac 3498184Sgordon 35124622Smtm # If there is no crash directory set it now 36124622Smtm case ${dumpdir} in 37124622Smtm '') 38124622Smtm dumpdir='/var/crash' 3998184Sgordon ;; 40124622Smtm [Nn][Oo]) 41124622Smtm dumpdir='NO' 4298184Sgordon ;; 4398184Sgordon esac 44124622Smtm 45136901Sdes if [ ! -c "${dumpdev}" ]; then 46136901Sdes warn "Dump device does not exist. Savecore not run." 47124622Smtm return 1 48124622Smtm fi 49136901Sdes 50136901Sdes if [ ! -d "${dumpdir}" ]; then 51136901Sdes warn "Dump directory does not exist. Savecore not run." 52136901Sdes return 1 53136901Sdes fi 5498184Sgordon return 0 5598184Sgordon} 5698184Sgordon 5798184Sgordonsavecore_start() 5898184Sgordon{ 59180317Smtm local dev 60180317Smtm 61180317Smtm case "${dumpdev}" in 62180317Smtm [Aa][Uu][Tt][Oo]) 63180317Smtm dev= 64180317Smtm ;; 65180317Smtm *) 66180317Smtm dev="${dumpdev}" 67180317Smtm ;; 68180317Smtm esac 69180317Smtm 70244218Spjd if savecore -C "${dev}" >/dev/null; then 71180318Smtm savecore ${savecore_flags} ${dumpdir} ${dumpdev} 72182460Sjhb if checkyesno crashinfo_enable; then 73182460Sjhb ${crashinfo_program} -d ${dumpdir} 74182460Sjhb fi 75254992Sgavin sync 76179962Smtm else 77197947Sdougb check_startmsgs && echo 'No core dumps found.' 78179962Smtm fi 7978344Sobrien} 8078344Sobrien 8178344Sobrienload_rc_config $name 8278344Sobrienrun_rc_command "$1" 83