Ignore:
Timestamp:
2011-11-16T16:01:18+01:00 (5 years ago)
Author:
jow
Message:

[package] base-files: rewrite killing of nonessential services to not rely on top, use the proc filesystem only

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/base-files/files/lib/upgrade/common.sh

    r28863 r29187  
    8181        local sig="${1:-TERM}" 
    8282        echo -n "Sending $sig to remaining processes ... " 
    83         /bin/busybox top -bn1 2>/dev/null | while read pid ppid user stat vsz pvsz pcpu cmd args; do 
    84                 case "$pid" in 
    85                         [0-9]*) : ;; 
    86                         *) continue ;; 
    87                 esac 
    88                 case "$cmd" in 
    89                         # Skip kernel threads and essential services 
    90                         \[*\]|*ash*|*init*|*watchdog*|*ssh*|*dropbear*|*telnet*|*login*|*ubusd*|*netifd*|*hostapd*|*wpa_supplicant*|*udhcpc*) : ;; 
     83 
     84        local stat 
     85        for stat in /proc/[0-9]*/stat; do 
     86                local pid name state ppid rest 
     87                read pid name state ppid rest < $stat 
     88                name="${name#(}"; name="${name%)}" 
     89 
     90                local cmdline 
     91                read cmdline < /proc/$pid/cmdline 
     92 
     93                # Skip kernel threads  
     94                [ -n "$cmdline" ] || continue 
     95 
     96                case "$name" in 
     97                        # Skip essential services 
     98                        *ash*|*init*|*watchdog*|*ssh*|*dropbear*|*telnet*|*login*|*ubusd*|*netifd*|*hostapd*|*wpa_supplicant*|*udhcpc*) : ;; 
    9199 
    92100                        # Killable process 
    93101                        *) 
    94102                                if [ $pid -ne $$ ] && [ $ppid -ne $$ ]; then 
    95                                         echo -n "${cmd##*/} " 
     103                                        echo -n "$name " 
    96104                                        kill -$sig $pid 2>/dev/null 
    97105                                fi 
Note: See TracChangeset for help on using the changeset viewer.