diff options
author | Aaron Griffin <aaronmgriffin@gmail.com> | 2009-07-30 09:49:49 -0700 |
---|---|---|
committer | Aaron Griffin <aaronmgriffin@gmail.com> | 2009-07-30 09:49:49 -0700 |
commit | 7f1bd75ee6aaffddf47e704c46fbab5396b7dd19 (patch) | |
tree | c8ec12a122e5f8102e3d29a627cfac2e111d4e25 /rc.shutdown | |
parent | e97ca08b2acabd6b2f327b44aa03670df929b770 (diff) |
Shutdown non-rc.conf daemons first
Flip the order in which daemons are shutdown. First we scan for
all daemons that are NOT in rc.conf and shut those down (order is
based on ls, so it is dependent on LC_COLLATE). Afterwards, we
shut down all daemons in rc.conf, in order
Signed-off-by: Aaron Griffin <aaronmgriffin@gmail.com>
Diffstat (limited to 'rc.shutdown')
-rwxr-xr-x | rc.shutdown | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/rc.shutdown b/rc.shutdown index 96611b7..1e1c6bf 100755 --- a/rc.shutdown +++ b/rc.shutdown @@ -23,7 +23,15 @@ if [ -x /etc/rc.local.shutdown ]; then fi if [ "$PREVLEVEL" = "3" -o "$PREVLEVEL" = "5" ]; then - # Shutdown daemons + # Find daemons NOT in the DAEMONS array. Shut these down first + if [ -d /var/run/daemons ]; then + for daemon in $(/bin/ls -1t /var/run/daemons); do + if ! in_array $daemon ${DAEMONS}; then + stop_daemon $daemon + fi + done + fi + # Shutdown daemons in reverse order let i=${#DAEMONS[@]}-1 while [ $i -ge 0 ]; do if [ "${DAEMONS[$i]:0:1}" != '!' ]; then @@ -31,12 +39,6 @@ if [ "$PREVLEVEL" = "3" -o "$PREVLEVEL" = "5" ]; then fi let i=i-1 done - # find any leftover daemons and shut them down in reverse order - if [ -d /var/run/daemons ]; then - for daemon in $(/bin/ls -1t /var/run/daemons); do - stop_daemon $daemon - done - fi fi # Terminate all processes |