I was rather surprised to find quite a few zombied sh processes. I was likewise surprised to find out the built-in ps command (part of busybox) isn't very robust. <sigh> Well, it's aiming to be an 'appliance' and that comes with a variety of issues that most folks won't care about it. I'm fine with that, at least the vendor isn't going out of their way to cripple it and prevent users from getting in there at all (aka Apple).
Ok, so after getting Optware installed and wrangling which packages to load (procps, procps-ps and psmisc) I had some usable tools. I'll say this, things are smoother since the starting days of WRT hacking.
/Apps/opt/bin/ps -aufx got me a useful list of processes, letting me see that upsutil was the parent of the defunct zombied processes.
Code: Select all
admin 5683 0.0 0.0 8772 1628 ? S Aug08 0:00 /usr/sbin/upsutil
admin 19990 0.0 0.0 0 0 ? Z Aug12 0:00 \_ [sh] <defunct>
admin 20132 0.0 0.0 0 0 ? Z Aug12 0:00 \_ [sh] <defunct>
admin 21062 0.0 0.0 0 0 ? Z Aug12 0:00 \_ [sh] <defunct>
admin 21361 0.0 0.0 0 0 ? Z Aug12 0:00 \_ [sh] <defunct>
admin 21650 0.0 0.0 0 0 ? Z Aug12 0:00 \_ [sh] <defunct>
admin 22118 0.0 0.0 0 0 ? Z Aug12 0:00 \_ [sh] <defunct>
admin 25366 0.0 0.0 0 0 ? Z Aug12 0:00 \_ [sh] <defunct>
admin 25656 0.0 0.0 0 0 ? Z Aug12 0:00 \_ [sh] <defunct>
admin 26105 0.0 0.0 0 0 ? Z Aug12 0:00 \_ [sh] <defunct>
admin 26400 0.0 0.0 0 0 ? Z Aug12 0:00 \_ [sh] <defunct>
admin 26714 0.0 0.0 0 0 ? Z Aug12 0:00 \_ [sh] <defunct>
admin 27166 0.0 0.0 0 0 ? Z Aug12 0:00 \_ [sh] <defunct>
admin 30704 0.0 0.0 0 0 ? Z Aug12 0:00 \_ [sh] <defunct>
(for a total of 1020 zombies)
Code: Select all
[~] # grep upsutil /etc/init.d/*
/etc/init.d/init_check.sh: #[ -f /usr/sbin/upsutil ] && /sbin/daemon_mgr upsutil start "/usr/sbin/upsutil &"
/etc/init.d/snmp_ups.sh: /bin/kill -USR1 `/sbin/pidof upsutil` 2>/dev/null
/etc/init.d/snmp_ups.sh: /bin/kill -USR2 `/sbin/pidof upsutil` 2>/dev/null
/etc/init.d/ups.sh: UPSUTIL_OPT=`/sbin/getcfg UPS upsutil_opt -d ""`
/etc/init.d/ups.sh: [ -f /usr/sbin/upsutil ] && /sbin/daemon_mgr upsutil start "/usr/sbin/upsutil $UPSUTIL_OPT &"
/etc/init.d/ups.sh: /usr/bin/killall -USR1 upsutil >/dev/null 2>&1
/etc/init.d/ups.sh: /usr/bin/killall -USR1 upsutil >/dev/null 2>&1
/etc/init.d/usb_ups.sh: UPSUTIL_PID=`/sbin/pidof upsutil`
/etc/init.d/usb_ups.sh: /sbin/daemon_mgr upsutil start "/usr/sbin/upsutil &"
/etc/init.d/usb_ups.sh: /bin/kill -USR1 `/sbin/pidof upsutil` 2>/dev/null
/etc/init.d/usb_ups.sh: /bin/kill -USR1 `/sbin/pidof upsutil` 2>/dev/null
/etc/init.d/usb_ups.sh: [ $DAEMON_TYPE = "3" ] && /bin/kill -USR1 `/sbin/pidof upsutil` 2>/dev/null
/etc/init.d/usb_ups.sh: /bin/kill -USR1 `/sbin/pidof upsutil` 2>/dev/null
/etc/init.d/usb_ups.sh: /bin/kill -USR2 `/sbin/pidof upsutil` 2>/dev/null
Meanwhile, has anyone else run into any trouble with upsutil spawning a lot of zombie sh processes?
I don't suppose I'd have gone in there this soon were it not for usbkernel problems trying to use openremote with the recommended z-wave stick. Anyway, that's an issue for another thread.