package/base-files: add support for the switch LED trigger
[openwrt.git] / package / base-files / files / lib / upgrade / common.sh
index 65ce816..e97958b 100644 (file)
@@ -77,6 +77,38 @@ run_ramfs() { # <command> [...]
        exec /bin/busybox ash -c "$*"
 }
 
        exec /bin/busybox ash -c "$*"
 }
 
+kill_remaining() { # [ <signal> ]
+       local sig="${1:-TERM}"
+       echo -n "Sending $sig to remaining processes ... "
+
+       local stat
+       for stat in /proc/[0-9]*/stat; do
+               local pid name state ppid rest
+               read pid name state ppid rest < $stat
+               name="${name#(}"; name="${name%)}"
+
+               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
+                       *)
+                               if [ $pid -ne $$ ] && [ $ppid -ne $$ ]; then
+                                       echo -n "$name "
+                                       kill -$sig $pid 2>/dev/null
+                               fi
+                       ;;
+               esac
+       done
+       echo ""
+}
+
 run_hooks() {
        local arg="$1"; shift
        for func in "$@"; do
 run_hooks() {
        local arg="$1"; shift
        for func in "$@"; do
This page took 0.025604 seconds and 4 git commands to generate.