⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 safe_asterisk

📁 asterisk 是一个很有知名度开源软件
💻
字号:
#!/bin/sh# vim:textwidth=80:tabstop=4:shiftwidth=4:smartindent:autoindentCLIARGS="$*"				# Grab any args passed to safe_asteriskTTY=9						# TTY (if you want one) for Asterisk to run onCONSOLE=yes					# Whether or not you want a console#NOTIFY=ben@alkaloid.net	# Who to notify about crashes#EXEC=/path/to/somescript	# Run this command if Asterisk crashes#LOGFILE=/path/to/logfile	# Where to place the normal logfile (disabled if blank)#SYSLOG=local0				# Which syslog facility to use (disabled if blank)MACHINE=`hostname`			# To specify which machine has crashed when getting the mailDUMPDROP=/tmpSLEEPSECS=4ASTSBINDIR=__ASTERISK_SBIN_DIR__ASTPIDFILE=__ASTERISK_VARRUN_DIR__/asterisk.pid# comment this line out to have this script _not_ kill all mpg123 processes when# asterisk exitsKILLALLMPG123=1# run asterisk with this priorityPRIORITY=0# set system filemax on supported OSes if this variable is set# SYSMAXFILES=262144# Asterisk allows full permissions by default, so set a umask, if you want# restricted permissions.#UMASK=022# set max files open with ulimit. On linux systems, this will be automatically# set to the system's maximum files open devided by two, if not set here.# MAXFILES=32768function message() {	echo "$1" >&2	if [ "$SYSLOG" != "" ]; then	    logger -p "${SYSLOG}.warn" -t safe_asterisk[$$] "$1"	fi	if [ "$LOGFILE" != "" ]; then	    echo "safe_asterisk[$$]: $1" >> "$LOGFILE"	fi}# Check if Asterisk is already running.  If it is, then bug out, because# starting safe_asterisk when Asterisk is running is very bad.VERSION=`${ASTSBINDIR}/asterisk -rx 'core show version'`if [ "`echo $VERSION | cut -c 1-8`" = "Asterisk" ]; then	message "Asterisk is already running.  $0 will exit now."	exit 1fi# since we're going to change priority and open files limits, we need to be# root. if running asterisk as other users, pass that to asterisk on the command# line.# if we're not root, fall back to standard everything.if [ `id -u` != 0 ]then	echo "Oops. I'm not root. Falling back to standard prio and file max." >&2	echo "This is NOT suitable for large systems." >&2	PRIORITY=0	message "safe_asterisk was started by `id -n` (uid `id -u`)."else	if `echo $OSTYPE | grep linux 2>&1 > /dev/null `	then		# maximum number of open files is set to the system maximum divided by two if		# MAXFILES is not set.		if [ "$MAXFILES" = "" ]		then			# just check if file-max is readable			if [ -r /proc/sys/fs/file-max ]			then				MAXFILES=$(( `cat /proc/sys/fs/file-max` / 2 ))			fi		fi		SYSCTL_MAXFILES="fs.file-max"	elif `echo $OSTYPE | grep darwin 2>&1 > /dev/null `	then		SYSCTL_MAXFILES="kern.maxfiles"	fi	if [ "$SYSMAXFILES" != "" ]	then		if [ "$SYSCTL_MAXFILES" != "" ]		then			sysctl -w $SYSCTL_MAXFILES=$SYSMAXFILES		fi	fi	# set the process's filemax to whatever set above	ulimit -n $MAXFILESfiif test "x$UMASK" != "x"; then	umask $UMASKfi## Let Asterisk dump core#ulimit -c unlimited## Don't fork when running "safely"#ASTARGS=""if [ "$TTY" != "" ]; then	if [ -c /dev/tty${TTY} ]; then		TTY=tty${TTY}	elif [ -c /dev/vc/${TTY} ]; then		TTY=vc/${TTY}	else		message "Cannot find specified TTY (${TTY})"		exit 1	fi	ASTARGS="${ASTARGS} -vvvg"	if [ "$CONSOLE" != "no" ]; then		ASTARGS="${ASTARGS} -c"	fifiif [ ! -w ${DUMPDROP} ]; then		message "Cannot write to ${DUMPDROP}"	exit 1fi## Don't die if stdout/stderr can't be written to#trap '' PIPE## Run scripts to set any environment variables or do any other system-specific setup needed#if [ -d /etc/asterisk/startup.d ]; then	for script in /etc/asterisk/startup.d/*.sh; do		if [ -x ${script} ]; then			source ${script}		fi	donefirun_asterisk(){	while :; do 		if [ "$TTY" != "" ]; then			cd /tmp			stty sane < /dev/${TTY}			nice -n $PRIORITY ${ASTSBINDIR}/asterisk -f ${CLIARGS} ${ASTARGS} >& /dev/${TTY} < /dev/${TTY}		else			cd /tmp			nice -n $PRIORITY ${ASTSBINDIR}/asterisk -f ${CLIARGS} ${ASTARGS}		fi		EXITSTATUS=$?		message "Asterisk ended with exit status $EXITSTATUS"		if [ "$EXITSTATUS" = "0" ]; then			# Properly shutdown....			message "Asterisk shutdown normally."			exit 0		elif [ $EXITSTATUS -gt 128 ]; then			let EXITSIGNAL=EXITSTATUS-128			echo "Asterisk exited on signal $EXITSIGNAL."			if [ "$NOTIFY" != "" ]; then				echo "Asterisk on $MACHINE exited on signal $EXITSIGNAL.  Might want to take a peek." | \				mail -s "Asterisk Died" $NOTIFY				message "Exited on signal $EXITSIGNAL"			fi			if [ "$EXEC" != "" ]; then				$EXEC			fi			PID=`cat ${ASTPIDFILE}`			if [ -f /tmp/core.${PID} ]; then				mv /tmp/core.${PID} ${DUMPDROP}/core.`hostname`-`date -Iseconds` &			elif [ -f /tmp/core ]; then				mv /tmp/core ${DUMPDROP}/core.`hostname`-`date -Iseconds` &			fi		else			message "Asterisk died with code $EXITSTATUS."			PID=`cat ${ASTPIDFILE}`			if [ -f /tmp/core.${PID} ]; then				mv /tmp/core.${PID} ${DUMPDROP}/core.`hostname`-`date -Iseconds` &			elif [ -f /tmp/core ]; then				mv /tmp/core ${DUMPDROP}/core.`hostname`-`date -Iseconds` &			fi		fi		message "Automatically restarting Asterisk."		sleep $SLEEPSECS		if [ $KILLALLMPG123 ]		then			killall -9 mpg123		fi	done}run_asterisk &

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -