#!/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