remote checkfs.sh from squeeze
[sysadmin-cookbook] / recepies / lxc / lxc-watchdog.sh
index 11fe0ac..9fc1600 100755 (executable)
@@ -47,8 +47,9 @@ lxc_hostname() {
 }
 
 lxc_ip() {
-       ( grep lxc.network.ipv4 /var/lib/lxc/$name/config | cut -d= -f2 || \
-       grep address $(lxc_rootfs $name)/etc/network/interfaces | sed 's/.*address //' ) | \
+       ( grep lxc.network.ipv4 /var/lib/lxc/$name/config | grep -v '^#' | cut -d= -f2 || \
+       grep address $(lxc_rootfs $name)/etc/network/interfaces | grep -v '^#' | sed 's/.*address //' ) | \
+       head -1 | \
        sed -e 's/ *//g' -e 's/\/.*$//'
 }
 
@@ -70,6 +71,7 @@ cleanup_init_scripts() {
                $rootfs/etc/rc?.d/*umountroot \
                $rootfs/etc/rc?.d/*hwclock* \
                $rootfs/etc/rc?.d/*udev* \
+               $rootfs/etc/rc?.d/*checkfs* \
        2>/dev/null | xargs -i rm -v {}
 
        echo $1 > $rootfs/etc/hostname
@@ -145,8 +147,14 @@ rootfs=$(lxc_rootfs $1)
 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`
+       if [ "$sulogins" -gt 0 ] ; then
+               stop_on=`expr $stop_on + $sulogins`
+       fi
+
        test -z "$tasks" && exit 1
-       if [ "$tasks" -eq 1 ]; then
+       if [ "$tasks" -eq $stop_on ]; then
 
                runlevel="$(runlevel ${vps_utmp})"
                lxc_log "$name runlevel $runlevel"
@@ -174,7 +182,7 @@ while true; do
                ;;
                esac
        else
-               lxc_log "$name $tasks tasks"
+               lxc_log "$name $tasks tasks $sulogins console"
        fi
 
        # time of 5 minutes on it JUST IN CASE...