Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-ci
Path: blob/main/vm/scripts/stop_vm.sh
1130 views
1
#!/bin/sh
2
3
#
4
# Copyright (c) 2014 Craig Rodrigues
5
# All rights reserved.
6
#
7
# Redistribution and use in source and binary forms, with or without
8
# modification, are permitted provided that the following conditions
9
# are met:
10
# 1. Redistributions of source code must retain the above copyright
11
# notice, this list of conditions and the following disclaimer.
12
# 2. Redistributions in binary form must reproduce the above copyright
13
# notice, this list of conditions and the following disclaimer in the
14
# documentation and/or other materials provided with the distribution.
15
#
16
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26
# SUCH DAMAGE.
27
#
28
29
30
usage()
31
{
32
echo ""
33
echo "$0 CONF=[configuration file]"
34
echo""
35
}
36
37
# Allow users to pass in from the command line
38
# $0 A=VAL1 B=VAL2
39
#
40
# which will set the A and B variables
41
for f in $@;
42
do
43
if [ "$f" != ${f%%=*} ]; then
44
eval $f
45
shift
46
fi
47
done
48
49
if [ -z "${CONF}" -o ! -f "${CONF}" ]; then
50
usage
51
exit 1
52
fi
53
54
. ${CONF}
55
56
57
echo "Stopping BHyve virtual machine named '$VM'"
58
59
PIDFILE=/var/run/vmm/${VM}.pid
60
if [ -f $PIDFILE ]; then
61
PID=`pgrep -F $PIDFILE bhyve 2> /dev/null`
62
fi
63
64
if [ -z "$PID" ]; then
65
echo "${VM} is not running"
66
fi
67
68
if [ -n "$PID" ]; then
69
COUNT=0
70
kill $PID
71
while [ $COUNT -lt 20 ] ; do
72
PID2=$(pgrep -F $PIDFILE bhyve 2> /dev/null)
73
if [ -z "$PID2" ]; then
74
break
75
fi
76
sleep 5
77
done
78
fi
79
80
if [ -e /dev/vmm/${VM} ]; then
81
/usr/sbin/bhyvectl --vm=${VM} --destroy
82
fi
83
84
rm -f $PIDFILE
85
86
exit 0
87
88