mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 18:55:19 +00:00 
			
		
		
		
	Updates from royk to safe_asterisk (#5207) Thanks!
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@8582 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		| @@ -1,11 +1,76 @@ | ||||
| #!/bin/sh | ||||
| CLIARGS="$*"		# Grab any args passed to safe_asterisk | ||||
| TTY=9			# TTY (if you want one) for Asterisk to run on | ||||
| CONSOLE=yes		# Whether or not you want a console | ||||
| # vim:textwidth=80:tabstop=4:shiftwidth=4:smartindent:autoindent | ||||
|  | ||||
| CLIARGS="$*"				# Grab any args passed to safe_asterisk | ||||
| TTY=9						# TTY (if you want one) for Asterisk to run on | ||||
| CONSOLE=yes					# Whether or not you want a console | ||||
| #NOTIFY=ben@alkaloid.net	# Who to notify about crashes | ||||
| MACHINE=`hostname`      # To specify which machine has crashed when getting the mail | ||||
| MACHINE=`hostname`			# To specify which machine has crashed when getting the mail | ||||
| DUMPDROP=/tmp | ||||
| SLEEPSECS=5 | ||||
| ASTSBINDIR=__ASTERISK_SBIN_DIR__ | ||||
|  | ||||
| # comment this line out to have this script _not_ kill all mpg123 processes when | ||||
| # asterisk exits | ||||
| KILLALLMPG123=1 | ||||
|  | ||||
| # run asterisk with this priority | ||||
| PRIORITY=-19 | ||||
|  | ||||
| # set system filemax on supported OSes if this variable is set | ||||
| # SYSMAXFILES=262144 | ||||
|  | ||||
| # 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=32768 | ||||
|  | ||||
| # 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 "Ops. I'm not root. Falling back to standard prio and file max." >&2 | ||||
| 	echo "This is NOT suitable for large systems." >&2 | ||||
| 	PRIORITY=0 | ||||
| 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 $MAXFILES | ||||
|  | ||||
| fi | ||||
|  | ||||
| # | ||||
| # Let Asterisk dump core | ||||
| # | ||||
| ulimit -c unlimited | ||||
|  | ||||
| # | ||||
| # Don't fork when running "safely" | ||||
| # | ||||
| @@ -29,11 +94,6 @@ if [ ! -w ${DUMPDROP} ]; then | ||||
| 	exit 1 | ||||
| fi | ||||
|  | ||||
| # | ||||
| # Let Asterisk dump core | ||||
| # | ||||
| ulimit -c unlimited | ||||
|  | ||||
| #launch_asterisk() | ||||
| #{ | ||||
| #} | ||||
| @@ -45,10 +105,10 @@ run_asterisk() | ||||
| 		if [ "$TTY" != "" ]; then | ||||
| 			cd /tmp | ||||
| 			stty sane < /dev/${TTY} | ||||
| 			${ASTSBINDIR}/asterisk ${CLIARGS} ${ASTARGS} >& /dev/${TTY} < /dev/${TTY} | ||||
| 			nice -n $PRIORITY ${ASTSBINDIR}/asterisk ${CLIARGS} ${ASTARGS} >& /dev/${TTY} < /dev/${TTY} | ||||
| 		else | ||||
| 			cd /tmp | ||||
| 			${ASTSBINDIR}/asterisk ${CLIARGS} ${ASTARGS} | ||||
| 			nice -n $PRIORITY ${ASTSBINDIR}/asterisk ${CLIARGS} ${ASTARGS} | ||||
| 		fi | ||||
| 		EXITSTATUS=$? | ||||
| 		echo "Asterisk ended with exit status $EXITSTATUS" | ||||
| @@ -63,7 +123,7 @@ run_asterisk() | ||||
| 				echo "Asterisk on $MACHINE exited on signal $EXITSIGNAL.  Might want to take a peek." | \ | ||||
| 				mail -s "Asterisk Died" $NOTIFY | ||||
| 			fi | ||||
|                         if [ -f /tmp/core ]; then | ||||
| 			if [ -f /tmp/core ]; then | ||||
| 				mv /tmp/core ${DUMPDROP}/core.`hostname`-`date -Iseconds` & | ||||
| 			fi | ||||
| 		else | ||||
| @@ -72,13 +132,17 @@ run_asterisk() | ||||
| 				exit 0 | ||||
| 			else | ||||
| 				echo "Asterisk died with code $EXITSTATUS." | ||||
| 	                        if [ -f /tmp/core ]; then | ||||
| 				if [ -f /tmp/core ]; then | ||||
| 					mv /tmp/core ${DUMPDROP}/core.`hostname`-`date -Iseconds` & | ||||
| 				fi | ||||
| 			fi | ||||
| 		fi | ||||
| 		echo "Automatically restarting Asterisk." | ||||
| 		sleep 4 | ||||
| 		sleep $SLEEPSECS | ||||
| 		if [ $KILLALLMPG123 ] | ||||
| 		then | ||||
| 			killall -9 mpg123 | ||||
| 		fi | ||||
| 	done | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user