Kill watch from bash

1.8k Views Asked by At

I need to be able to call this:

watch -n1 cat /proc/mdstat

from bash.

For raid creating watching (after mdadm --create etc.), and then kill it then building process will end.

#!/bin/bash
#PID=$!
while
progress=$(cat /proc/mdstat |grep -oE 'recovery = ? [0-9]*')
do
    watch -n1 cat /proc/mdstat
    PID=$(pidof watch)
    echo "$PID" >> /mnt/pid
    if (("$progress" >= "100"))
        then
            break
            kill -9 $PID
    fi
done
echo "done" 

But I can not figure out how to kill watch out from bash. I tried PID=$! and PID=$$, pidof watch at the cycle and out of him, but can't assign correct PID to my variable to make kill -9 $PID.

1

There are 1 best solutions below

2
nos On BEST ANSWER

It sounds like you'll need to have watch running until progress reaches 100 ?

watch  -n1 cat /proc/mdstat &
WATCHPID=$!
while
progress=$(cat /proc/mdstat |grep -oE 'recovery = ? [0-9]*')
do

if (("$progress" >= "100"))
    then
        break

fi
sleep 1
done

kill $WATCHPID

echo "done"