I came across this question when I was trying to get better/logged output from du -sh $data_path
. I used the "while command, do sleep" pattern found here, but used some complex AWK to give the output I wanted.
while du -sh $data_path; do sleep 1; done | awk '
$1 != size {
size=$1;
path=$2;
time=systime();
seconds=time-prevtime;
if(seconds < 1000000000){
seconds=seconds" seconds"
}else{
seconds=""
}
print size, path, strftime("%m/%d/%Y@%H:%M:%S", time), seconds;
prevtime=time
}'
I actually did this as a oneliner, which is why there are semicolons. But to make it readable, I broke it out. The output looks like:
502G /var/lib/cassandra/dump/ 05/22/2018@04:46:17
503G /var/lib/cassandra/dump/ 05/22/2018@04:46:59 42 seconds
504G /var/lib/cassandra/dump/ 05/22/2018@04:47:57 58 seconds
505G /var/lib/cassandra/dump/ 05/22/2018@04:48:55 58 seconds
506G /var/lib/cassandra/dump/ 05/22/2018@04:49:53 58 seconds
507G /var/lib/cassandra/dump/ 05/22/2018@04:50:50 57 seconds
508G /var/lib/cassandra/dump/ 05/22/2018@04:51:46 56 seconds
509G /var/lib/cassandra/dump/ 05/22/2018@04:52:44 58 seconds
510G /var/lib/cassandra/dump/ 05/22/2018@04:53:41 57 seconds