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