39 lines
1 KiB
Bash
39 lines
1 KiB
Bash
#!/usr/bin/bash
|
|
#
|
|
# <umount>/usr/local/sbin/pam-umount.sh %(USER) %(USERUID) %(MNTPT)</umount>'
|
|
|
|
set -eu
|
|
|
|
usr="$1"
|
|
uid="$2"
|
|
mtp="$3"
|
|
|
|
shutdownVMs(){
|
|
local VM
|
|
for VM in $(sudo -u $usr XDG_RUNTIME_DIR="/run/user/$uid" \
|
|
XDG_CONFIG_HOME="/tmp/$uid/.config/" \
|
|
XDG_CACHE_HOME="/var/cache/user/$uid/" \
|
|
virsh list --state-running | \
|
|
sed -nE "s/.*\s+(\S+)\s+running/\1/p") ; do
|
|
sudo -u $usr XDG_RUNTIME_DIR="/run/user/$uid" \
|
|
XDG_CONFIG_HOME="/tmp/$uid/.config/" \
|
|
XDG_CACHE_HOME="/var/cache/user/$uid/" \
|
|
virsh destroy "$VM" 2>&1 | systemd-cat || true
|
|
done
|
|
}
|
|
|
|
######################
|
|
|
|
## This is the first mount we need to get rid of:
|
|
if [[ "$mtp" =~ "/lmn/media/$usr/share" ]] ; then
|
|
shutdownVMs
|
|
sleep 5 # leave some time to write caches …
|
|
sudo -u ${usr} killall gvfsd | systemd-cat
|
|
sudo -u ${usr} killall dbus-daemon | systemd-cat
|
|
systemctl kill system-virtiofs.slice || true
|
|
# debug to find processes blocking umount:
|
|
# lsof >> /var/log/lsof.log
|
|
fi
|
|
|
|
## Just umount:
|
|
exec umount "$mtp"
|