base-files: rewrite killing of nonessential services to not rely on top, use the proc filesystem only
SVN-Revision: 29187
This commit is contained in:
		| @@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk | |||||||
| include $(INCLUDE_DIR)/kernel.mk | include $(INCLUDE_DIR)/kernel.mk | ||||||
|  |  | ||||||
| PKG_NAME:=base-files | PKG_NAME:=base-files | ||||||
| PKG_RELEASE:=94 | PKG_RELEASE:=95 | ||||||
|  |  | ||||||
| PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/ | PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/ | ||||||
| PKG_BUILD_DEPENDS:=opkg/host | PKG_BUILD_DEPENDS:=opkg/host | ||||||
|   | |||||||
| @@ -80,19 +80,27 @@ run_ramfs() { # <command> [...] | |||||||
| kill_remaining() { # [ <signal> ] | kill_remaining() { # [ <signal> ] | ||||||
| 	local sig="${1:-TERM}" | 	local sig="${1:-TERM}" | ||||||
| 	echo -n "Sending $sig to remaining processes ... " | 	echo -n "Sending $sig to remaining processes ... " | ||||||
| 	/bin/busybox top -bn1 2>/dev/null | while read pid ppid user stat vsz pvsz pcpu cmd args; do |  | ||||||
| 		case "$pid" in | 	local stat | ||||||
| 			[0-9]*) : ;; | 	for stat in /proc/[0-9]*/stat; do | ||||||
| 			*) continue ;; | 		local pid name state ppid rest | ||||||
| 		esac | 		read pid name state ppid rest < $stat | ||||||
| 		case "$cmd" in | 		name="${name#(}"; name="${name%)}" | ||||||
| 			# Skip kernel threads and essential services |  | ||||||
| 			\[*\]|*ash*|*init*|*watchdog*|*ssh*|*dropbear*|*telnet*|*login*|*ubusd*|*netifd*|*hostapd*|*wpa_supplicant*|*udhcpc*) : ;; | 		local cmdline | ||||||
|  | 		read cmdline < /proc/$pid/cmdline | ||||||
|  |  | ||||||
|  | 		# Skip kernel threads  | ||||||
|  | 		[ -n "$cmdline" ] || continue | ||||||
|  |  | ||||||
|  | 		case "$name" in | ||||||
|  | 			# Skip essential services | ||||||
|  | 			*ash*|*init*|*watchdog*|*ssh*|*dropbear*|*telnet*|*login*|*ubusd*|*netifd*|*hostapd*|*wpa_supplicant*|*udhcpc*) : ;; | ||||||
|  |  | ||||||
| 			# Killable process | 			# Killable process | ||||||
| 			*) | 			*) | ||||||
| 				if [ $pid -ne $$ ] && [ $ppid -ne $$ ]; then | 				if [ $pid -ne $$ ] && [ $ppid -ne $$ ]; then | ||||||
| 					echo -n "${cmd##*/} " | 					echo -n "$name " | ||||||
| 					kill -$sig $pid 2>/dev/null | 					kill -$sig $pid 2>/dev/null | ||||||
| 				fi | 				fi | ||||||
| 			;; | 			;; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Jo-Philipp Wich
					Jo-Philipp Wich