implémentation initiale de rumount
This commit is contained in:
parent
f460399dd5
commit
1ad804b0d5
|
@ -0,0 +1,42 @@
|
|||
#!/bin/bash
|
||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
|
||||
urequire DEFAULTS
|
||||
|
||||
function display_help() {
|
||||
uecho "$scriptname: démonter un système de fichier récursivement
|
||||
|
||||
USAGE
|
||||
$scriptname mountpoint
|
||||
|
||||
Démonter tous les systèmes de fichiers qui sont montés en-dessous de mountpoint
|
||||
puis démonter mountpoint. Démonter aussi tous les systèmes de fichiers
|
||||
bind-montés à partir d'un sous-répertoire de mountpoint."
|
||||
}
|
||||
|
||||
args=(--help '$exit_with display_help')
|
||||
parse_args "$@"; set -- "${args[@]}"
|
||||
|
||||
mountp="$1"
|
||||
[ -n "$mountp" ] || die "Vous dévez spécifier le système de fichier à démonter"
|
||||
[ -d "$mountp" ] || die "$mountp: répertoire introuvable"
|
||||
setx mountp=abspath "$mountp"
|
||||
|
||||
run_as_root "$@"
|
||||
|
||||
setx -a mountps=findmnt -nlo TARGET
|
||||
array_contains mountps "$mountp" || die "Vous devez spécifier un répertoire de montage valide"
|
||||
|
||||
function show_all() {
|
||||
findmnt -T "$mountp" -Rnlo TARGET
|
||||
findmnt -nlo TARGET | awkrun mountp="$mountp" '{ if (substr($0, 1, length(mountp) + 1) == (mountp "/")) print }'
|
||||
}
|
||||
|
||||
setx -a mounts=evalp show_all // sort -u // \
|
||||
awk '{print length($0) "," $0}' // \
|
||||
sort -nr // \
|
||||
awk '{sub(/[0-9]+,/, ""); print}'
|
||||
for mount in "${mounts[@]}"; do
|
||||
estep "$mount"
|
||||
umount "$mount" || die
|
||||
done
|
Loading…
Reference in New Issue