On 01/02/2013 12:57 PM, Stéphane Graber wrote: > On 12/27/2012 03:52 AM, Natanael Copa wrote: >> - avoid getopt --longoptions >> - use 'which' instead of 'type' to detect existance of tools >> - specify -s SIG<signame> with kill >> >> Signed-off-by: Natanael Copa <nc...@alpinelinux.org> > > Looks good. Pushed.
Turns out that not all kill implementations allow "-s SIG<name>", some instead required "-s <name>". As far as I can tell, all implementations support the latter, so I pushed a change to use that instead. > > Acked-by: Stéphane Graber <stgra...@ubuntu.com> > >> --- >> dash didn't complain when I tested it, but it did not shut down the >> container due to busybox init uses other signals for poweroff/reboot. >> >> The poweroff/reboot signal should probably be configurable but thats >> other issue. >> >> src/lxc/lxc-shutdown.in | 52 >> ++++++++++++++++++++++++++----------------------- >> 1 file changed, 28 insertions(+), 24 deletions(-) >> >> diff --git a/src/lxc/lxc-shutdown.in b/src/lxc/lxc-shutdown.in >> index c0d1702..cf1d603 100644 >> --- a/src/lxc/lxc-shutdown.in >> +++ b/src/lxc/lxc-shutdown.in >> @@ -1,4 +1,4 @@ >> -#!/bin/bash >> +#!/bin/sh >> >> # (C) Copyright Canonical 2011,2012 >> >> @@ -41,30 +41,30 @@ dolxcstop() >> exit 0 >> } >> >> -shortoptions='hn:rwt:' >> -longoptions='help,name:,wait,reboot,timeout:' >> - >> -timeout="-1" >> - >> -getopt=$(getopt -o $shortoptions --longoptions $longoptions -- "$@") >> -if [ $? != 0 ]; then >> +usage_err() { >> + [ -n "$1" ] && echo "$1" >&2 >> usage >> - exit 1; >> -fi >> + exit 1 >> +} >> + >> +optarg_check() { >> + [ -n "$2" ] || usage_err "option '$1' requires an argument" >> +} >> >> -eval set -- "$getopt" >> +timeout="-1" >> >> reboot=0 >> dowait=0 >> >> -while true; do >> - case "$1" in >> +while [ $# -gt 0 ]; do >> + opt="$1" >> + shift >> + case "$opt" in >> -h|--help) >> usage >> - exit 1 >> ;; >> -n|--name) >> - shift >> + optarg_check $opt "$1" >> lxc_name=$1 >> shift >> ;; >> @@ -77,19 +77,23 @@ while true; do >> shift >> ;; >> -t|--timeout) >> - shift >> + optarg_check $opt "$1" >> timeout=$1 >> dowait=1 >> shift >> ;; >> --) >> - shift >> break;; >> + -?) >> + usage_err "unknown option '$opt'" >> + ;; >> + -*) >> + # split opts -abc into -a -b -c >> + set -- $(echo "${opt#-}" | sed 's/\(.\)/ -\1/g') "$@" >> + ;; >> *) >> - echo $1 >> - usage >> + usage_err "unknown option '$opt'" >> exit 1 >> - ;; >> esac >> done >> >> @@ -104,8 +108,8 @@ if [ "$(id -u)" != "0" ]; then >> exit 1 >> fi >> >> -type lxc-info > /dev/null || { echo "lxc-info not found."; exit 1; } >> -type lxc-wait > /dev/null || { echo "lxc-wait not found."; exit 1; } >> +which lxc-info > /dev/null || { echo "lxc-info not found."; exit 1; } >> +which lxc-wait > /dev/null || { echo "lxc-wait not found."; exit 1; } >> >> pid=`lxc-info -n $lxc_name -p 2>/dev/null | awk '{ print $2 }'` >> if [ "$pid" = "-1" ]; then >> @@ -114,10 +118,10 @@ if [ "$pid" = "-1" ]; then >> fi >> >> if [ $reboot -eq 1 ]; then >> - kill -INT $pid >> + kill -s SIGINT $pid >> exit 0 >> else >> - kill -PWR $pid >> + kill -s SIGPWR $pid >> fi >> >> if [ $dowait -eq 0 ]; then >> > > -- Stéphane Graber Ubuntu developer http://www.ubuntu.com
signature.asc
Description: OpenPGP digital signature
------------------------------------------------------------------------------ Master Java SE, Java EE, Eclipse, Spring, Hibernate, JavaScript, jQuery and much more. Keep your Java skills current with LearnJavaNow - 200+ hours of step-by-step video tutorials by Java experts. SALE $49.99 this month only -- learn more at: http://p.sf.net/sfu/learnmore_122612
_______________________________________________ Lxc-devel mailing list Lxc-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/lxc-devel