X-Git-Url: https://git.rrq.au/?a=blobdiff_plain;f=overlay-stop;h=132da7600e7b37453e94a10a748367fb04896055;hb=56d0e97b5d1386af5a8203588a08b0340706bd15;hp=2c57c52f529610d65d8c8ddaffa5dccce6524d57;hpb=94d01e2775fdeb67ab729b4e7b98867e6cd97c16;p=rrq%2Foverlay-boot.git diff --git a/overlay-stop b/overlay-stop index 2c57c52..132da76 100755 --- a/overlay-stop +++ b/overlay-stop @@ -2,16 +2,21 @@ # # Script to stop the nominated overlay subhost -[ $(id -u) = 0 ] || exec sudo $0 $@ -. $(dirname $(realpath $0))/functions XXX +OVERLAYDIR="$(dirname $(realpath $0))" +. $OVERLAYDIR/functions $* -NAME="$1" +subhost_name "$1" +subhost_config read USPID RSPID <&2 && exit 1 +if [ -z "$USPID" ] ; then + [ -r /run/netns/$NAME ] && ip netns del $NAME + echo "$NAME is not running" >&2 + exit 1 +fi if [ -z "$RSPID" ] ; then cat <&2 @@ -21,5 +26,18 @@ EOF exit 1 fi -CHILDPIDS="$(nsenter -t $RSPID -p -m ps -hopid --ppid 1)" -nsenter -t $RSPID -p -m kill $CHILDPIDS +START="$(reverse "$START")" +nsenter -t $RSPID -p -m -i -u \ + ip netns exec $NAME chroot $(realpath $LIVE) \ + /bin/sh -c "for srv in $START ; do service \$srv stop ; done" + +for p in $RSPID $USPID ; do + for S in 15 1 2 9 ; do + ps -hocmd $p || break + kill -$S $p + done +done + +[ -r /run/netns/$NAME ] && ip netns del $NAME + +true