You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

84 lines
1.4 KiB

#!/usr/bin/env bash
set -eu
QUIET=0
SILENT=0
synopsis() {
cat << EOF
Usage : `basename $0` [-h] [-q] [-s] system
EOF
}
help() {
cat << EOF
`basename $0` tue tous les processus associés au système.
`synopsis`
ATTENTION : cette action correspond à une coupure d'alimentation.
Dans le cas d'un système utilisant une union de systèmes de
fichiers, les modifications seront perdues !
-h : affiche cette aide
-q : n'affiche pas les PIDS des processus tué.
-s : pas d'erreur si le système n'est pas lancé.
EOF
}
usage() {
synopsis
exit 1
}
args() {
local opt
while getopts "hqs" opt; do
case $opt in
h) help; exit 0;;
q) QUIET=1;;
s) SILENT=1;;
?) usage;;
esac
done
shift $(($OPTIND - 1))
[ $# -ne 1 ] && usage
GUEST_NAME="$1"
if echo $GUEST_NAME | grep -q '/'; then
error "$GUEST_NAME est un nom de système invalide"
fi
}
killSystem() {
pids="$(ps -w -w ux | grep -E $GUEST_NAME[-]$USER | tr -s ' ' | cut -d ' ' -f 2)"
if [ -z "$pids" ]; then
if [ $SILENT = 1 ]; then
exit 0
fi
echo "Le système virtuel $GUEST_NAME.conf n'est pas lancé !" >&2
exit 1
fi
[ $QUIET = 0 ] && \
echo "Kill $GUEST_NAME: Suppression de(s) processus : "$pids
kill $pids 2> /dev/null
#rm -f $TMPDIR/vdn-vnc-$USER-$GUEST_NAME-fifo
rm -f $TMPDIR/vdn-vnc-$USER-$GUEST_NAME-raw-socket
}
# Programme principal
GUEST_OWNER=$USER
VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh
args "$@"
killSystem