tools.utils
2023-12-16
tools.utils/kvm/qemu-ga.watcher.sh.sh
+ Скрипт проверки состояния qemu-ga
| awgur@0 | 1 #!/bin/sh |
| awgur@0 | 2 # devel.a0fs.ru -- ncc.mon.kvm.tool:/root/libexec/qemu-ga.watcher.sh -- v0.r202312.1 |
| awgur@0 | 3 # Запускается через crontab: |
| awgur@0 | 4 # */15 * * * * /bin/sh /root/libexec/qemu-ga.watcher.sh |
| awgur@0 | 5 # |
| awgur@0 | 6 export PATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin" |
| awgur@0 | 7 |
| awgur@0 | 8 NAME="qemu-ga" |
| awgur@0 | 9 |
| awgur@0 | 10 |
| awgur@0 | 11 log () { |
| awgur@0 | 12 logger -t "qemu-ga.watcher" "$@" |
| awgur@0 | 13 } |
| awgur@0 | 14 |
| awgur@0 | 15 |
| awgur@0 | 16 check_get_proc () { |
| awgur@0 | 17 ps -Ao comm,pcpu | awk -v pname="$NAME" '\ |
| awgur@0 | 18 BEGIN {buf = 0}; \ |
| awgur@0 | 19 $1 == pname {if (buf < $2) buf = $2 * 10 } \ |
| awgur@0 | 20 END {print buf} \ |
| awgur@0 | 21 ' |
| awgur@0 | 22 } |
| awgur@0 | 23 |
| awgur@0 | 24 |
| awgur@0 | 25 check () { |
| awgur@0 | 26 [ $(check_get_proc) -ge 800 ] |
| awgur@0 | 27 } |
| awgur@0 | 28 |
| awgur@0 | 29 |
| awgur@0 | 30 { |
| awgur@0 | 31 flag="1" |
| awgur@0 | 32 echo CHECK |
| awgur@0 | 33 if check ; then |
| awgur@0 | 34 log -p user.error "qemu agent overload: watching..." |
| awgur@0 | 35 cntr=0 |
| awgur@0 | 36 |
| awgur@0 | 37 while [ $cntr -le 100 ] ; do |
| awgur@0 | 38 sleep 1 |
| awgur@0 | 39 cntr=$(( $cntr + 1 )) |
| awgur@0 | 40 |
| awgur@0 | 41 if ! check ; then |
| awgur@0 | 42 flag="" |
| awgur@0 | 43 break |
| awgur@0 | 44 |
| awgur@0 | 45 fi |
| awgur@0 | 46 done |
| awgur@0 | 47 |
| awgur@0 | 48 if [ "$flag" ] ; then |
| awgur@0 | 49 log -p user.error "qemu agent overload: restarting" |
| awgur@0 | 50 systemctl restart qemu-guest-agent |
| awgur@0 | 51 |
| awgur@0 | 52 fi |
| awgur@0 | 53 |
| awgur@0 | 54 } 2>&1 | log |
| awgur@0 | 55 |