replicate all filesystems and snapshots to another machine
[sysadmin-cookbook] / recepies / lxc / lxc-watchdog.sh
index 5c821fa..1ae6fad 100755 (executable)
@@ -133,7 +133,8 @@ lxc_start() {
 
        if ! lxc-info -n $name | grep RUNNING ; then
                lxc_log "$name start"
-               mount $rootfs -o remount,rw # fix debian upgrade which remounts dir ro
+               dev=`df -P $rootfs | tail -1 | cut -d" " -f1`
+               mount $dev -o remount,rw # fix debian upgrade which remounts dir ro
                lxc-start -n $name -o /tmp/${name}.log -d
                lxc-wait  -n $name -s RUNNING
                lxc-info  -n $name
@@ -144,12 +145,14 @@ lxc_start() {
 lxc_watchdog() {
 name=$1
 rootfs=$(lxc_rootfs $1)
+run=$rootfs/var/run
+test -L $run && run=$rootfs/`readlink $run` # recent Debian have symlink to /run
+cd $run || echo "can't cd watchdog into $run"
 
 while true; do
-       vps_utmp=${rootfs}/var/run/utmp
        tasks=`wc -l < /cgroup/${name}/tasks`
        stop_on=1 # init
-       sulogins=`lxc-ps --name backuppc | grep sulogin | wc -l`
+       sulogins=`lxc-ps --name $name | grep sulogin | wc -l`
        if [ "$sulogins" -gt 0 ] ; then
                stop_on=`expr $stop_on + $sulogins`
        fi
@@ -157,14 +160,14 @@ while true; do
        test -z "$tasks" && exit 1
        if [ "$tasks" -eq $stop_on ]; then
 
-               runlevel="$(runlevel ${vps_utmp})"
+               runlevel="$(runlevel utmp)"
                lxc_log "$name runlevel $runlevel"
 
                case $runlevel in
                N*)
                        # nothing for new boot state
                ;;
-               ??0)
+               ??0|unknown)
                        lxc_log "$name halt"
                        lxc-stop -n "${name}"
                        lxc-wait -n ${name} -s STOPPED
@@ -187,7 +190,7 @@ while true; do
        fi
 
        # time of 5 minutes on it JUST IN CASE...
-       inotifywait -qqt 300 ${vps_utmp}
+       inotifywait -qqt 300 utmp
 done
 
 lxc_log "$name watchdog exited"