Thanks go to “S” for pointing out the mistake in my last posting. It’s easy to fix though.
When virt-df is run with the –csv option, it outputs a Comma-Separated Values format spreadsheet. CSV is not totally straightforward to parse and so you should leave it up to a specialized tool. Of course I recommend my own tool csvtool which is available in Fedora, Debian and Ubuntu.
The basic plan is to use csvtool to drop the first row (the column headings row), and pull out columns 1, 2 and 6 from the rest of the output. Those columns are respectively the virtual machine name, the filesystem, and the %usage:
$ virt-df --csv | csvtool drop 1 - | csvtool col 1-2,6 - Debian5x64,/dev/debian5x64/home,35.6% Debian5x64,/dev/debian5x64/root,60.9% Debian5x64,/dev/debian5x64/tmp,3.3% Debian5x64,/dev/debian5x64/usr,40.5% Debian5x64,/dev/debian5x64/var,15.2% Debian5x64,/dev/vda1,20.3% RHEL620100329n0x64,/dev/vda1,7.4% RHEL620100329n0x64,/dev/vg_rhel620100329n0/lv_root,16.7% Ubuntu910x64,/dev/vda1,42.5% [...snipped...]
Adding the previous awk test gives the desired output, all filesystems with ≥ 60% usage:
$ virt-df --csv | csvtool drop 1 - | csvtool col 1-2,6 - | csvtool readable - | awk 'strtonum(substr($3,0,length($3)-1))>=60 {print}' Debian5x64 /dev/debian5x64/root 60.9% F13Rawhidex64 /dev/vg_f13rawhide/lv_root 66.0% Windows7x32 /dev/vda2 74.6% Windows7x64 /dev/vda2 90.7%
This can be placed in a script or cron job.
Pingback: Tip: find out when filesystems get full with virt-df « Richard WM Jones