/[sysadmin-cookbook]/recepies/lxc/lxc-watchdog.sh
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /recepies/lxc/lxc-watchdog.sh

Parent Directory Parent Directory | Revision Log Revision Log


Revision 175 - (hide annotations)
Mon Mar 15 23:08:31 2010 UTC (14 years ago) by root
File MIME type: application/x-sh
File size: 1159 byte(s)
Start container and stop/start on reboot/halt

1 root 175 #!/bin/bash -x
2    
3     # based on Tony Risinger code from lxc-users
4     # http://www.mail-archive.com/lxc-users@lists.sourceforge.net/msg00074.html
5    
6     which inotifywait || apt-get install inotify-tools
7    
8     name=llin
9    
10     #lxc-info -n $name | grep RUNNING && exit
11    
12     rootfs=`grep lxc.rootfs /var/lib/lxc/$name/config | cut -d= -f2`
13     echo "$name rootfs $rootfs"
14    
15     # fix lxc-stop which remounts ro
16     mount /mnt/llin -o remount,rw
17    
18     lxc-start -d -n $name -o /tmp/${name}.log
19    
20     while true; do
21     # time of 5 minutes on it JUST IN CASE...
22     vps_utmp=${rootfs}/var/run/utmp
23     inotifywait -qqt 300 ${vps_utmp}
24     if [ $(wc -l < /cgroup/${name}/tasks) -eq 1 ]; then
25    
26     runlevel="$(runlevel ${vps_utmp})"
27     echo "# $name runlevel $runlevel"
28    
29     case $runlevel in
30     N*)
31     # nothing for new boot state
32     ;;
33     ??0)
34     echo "$name halt"
35     lxc-stop -n "${name}"
36     break
37     ;;
38     ??6)
39     echo "$name reboot";
40     lxc-stop -n ${name}
41     lxc-wait -n ${name} -s STOPPED
42     mount /mnt/llin -o remount,rw
43     lxc-start -d -n ${name} -o /tmp/${name}.log
44     ;;
45     *)
46     # make sure vps is still running
47     state="$(lxc-info -n "${name}" | sed -e 's/.* is //')"
48     [ "$state" = "RUNNING" ] || break
49     ;;
50     esac
51     fi
52     done
53    

Properties

Name Value
svn:executable *

  ViewVC Help
Powered by ViewVC 1.1.26