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.
63 lines
1.5 KiB
63 lines
1.5 KiB
#!/bin/sh
|
|
# rc.lxc init script
|
|
# Written by Matteo Bernardini <ponce@slackbuilds.org>
|
|
#
|
|
# This script checks for the presence of the parameter lxc.start.auto
|
|
# in the available container configurations: if it's set to 1 the
|
|
# container is started (in an auto-detached screen session if
|
|
# screen is available) when rc.lxc is called with the "start" param.
|
|
#
|
|
# To stop the container it uses lxc-attach to execute /sbin/halt
|
|
# inside of it.
|
|
|
|
. /usr/share/lxc/lxc.functions
|
|
|
|
start_lxc() {
|
|
for CONTAIN in $(/usr/bin/lxc-ls); do
|
|
if [ "$(lxc-info -n $CONTAIN -c lxc.start.auto)" = "lxc.start.auto = 1" ]; then
|
|
if [ "$(/usr/bin/lxc-info -s -n $CONTAIN | grep STOPPED$)" ]; then
|
|
echo "Starting LXC container ${CONTAIN}."
|
|
if [ -x /usr/bin/screen ]; then
|
|
/usr/bin/screen -dmS init-${CONTAIN} /usr/bin/lxc-start -n $CONTAIN
|
|
else
|
|
/usr/bin/lxc-start -n $CONTAIN -d
|
|
fi
|
|
/usr/bin/lxc-wait -n $CONTAIN -s RUNNING
|
|
if [ $? -gt 0 ]; then
|
|
return 2
|
|
fi
|
|
fi
|
|
fi
|
|
done
|
|
}
|
|
|
|
stop_lxc() {
|
|
for CONTAIN in $(/usr/bin/lxc-ls --active); do
|
|
echo "Stopping LXC container ${CONTAIN}."
|
|
/usr/bin/lxc-stop -n $CONTAIN
|
|
/usr/bin/lxc-wait -n $CONTAIN -s STOPPED
|
|
if [ $? -gt 0 ]; then
|
|
return 2
|
|
fi
|
|
done
|
|
}
|
|
|
|
restart_lxc() {
|
|
stop_lxc
|
|
sleep 2
|
|
start_lxc
|
|
}
|
|
|
|
case "$1" in
|
|
'start')
|
|
start_lxc
|
|
;;
|
|
'stop')
|
|
stop_lxc
|
|
;;
|
|
restart)
|
|
restart_lxc
|
|
;;
|
|
*)
|
|
echo "usage $0 start|stop|restart"
|
|
esac
|
|
|