diff options
Diffstat (limited to 'recipes/initscripts/initscripts-1.0/slugos/umountnfs.sh')
-rw-r--r-- | recipes/initscripts/initscripts-1.0/slugos/umountnfs.sh | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/recipes/initscripts/initscripts-1.0/slugos/umountnfs.sh b/recipes/initscripts/initscripts-1.0/slugos/umountnfs.sh new file mode 100644 index 0000000000..6ff83e50d7 --- /dev/null +++ b/recipes/initscripts/initscripts-1.0/slugos/umountnfs.sh @@ -0,0 +1,40 @@ +#!/bin/sh +# +# umountnfs.sh Unmount all network filesystems. +# +PATH=/sbin:/bin:/usr/sbin:/usr/bin + +# Write a reboot record to /var/log/wtmp before unmounting +halt -w + +# Ensure /proc is mounted +test -r /proc/mounts || mount -t proc proc /proc + +echo "Unmounting remote filesystems..." + +# +# Read the list of mounted file systems and -f umount the +# known network file systems. -f says umount it even if +# the server is unreachable. Do not attempt to umount +# the root file system. Unmount in reverse order from +# that given by /proc/mounts (otherwise it may not work). +# +unmount() { + local dev mp type opts + if read dev mp type opts + then + # recurse - unmount later items + unmount + # skip /, /proc and /dev + case "$mp" in + /|/proc)return 0;; + /dev) return 0;; + esac + # then unmount this, if nfs + case "$type" in + nfs|smbfs|ncpfs) umount -f "$mp";; + esac + fi +} + +unmount </proc/mounts |