diff options
Diffstat (limited to 'package/base-files/files/lib/upgrade')
| -rw-r--r-- | package/base-files/files/lib/upgrade/common.sh | 24 | 
1 files changed, 24 insertions, 0 deletions
diff --git a/package/base-files/files/lib/upgrade/common.sh b/package/base-files/files/lib/upgrade/common.sh index 65ce816db..2126ca1c3 100644 --- a/package/base-files/files/lib/upgrade/common.sh +++ b/package/base-files/files/lib/upgrade/common.sh @@ -77,6 +77,30 @@ run_ramfs() { # <command> [...]  	exec /bin/busybox ash -c "$*"  } +kill_remaining() { # [ <signal> ] +	local sig="${1:-TERM}" +	echo -n "Sending $sig to remaing processes ... " +	top -bn1 | while read pid ppid user stat vsz pvsz pcpu cmd args; do +		case "$pid" in +			[0-9]*) : ;; +			*) continue ;; +		esac +		case "$cmd" in +			# Skip kernel threads and essential services +			\[*\]|*ash*|*init*|*watchdog*|*ssh*|*dropbear*|*telnet*|*login*) : ;; + +			# Killable process +			*) +				if [ $pid -ne $$ ] && [ $ppid -ne $$ ]; then +					echo -n "${cmd##*/} " +					kill -$sig $pid 2>/dev/null +				fi +			;; +		esac +	done +	echo "" +} +  run_hooks() {  	local arg="$1"; shift  	for func in "$@"; do  | 
