How can i populate a variable holding the total value from below content extracted after running df -h --total
on centos. Note: the result is not from command line but from a php file.
How do i only capture the percentage value in the last line using PHP?
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 20G 685M 20G 4% /
devtmpfs 40G 0 40G 0% /dev
tmpfs 40G 0 40G 0% /dev/shm
tmpfs 40G 177M 40G 1% /run
tmpfs 40G 0 40G 0% /sys/fs/cg
/dev/mapper/rhel-usr 20G 3.2G 17G 16% /usr
/dev/sda2 1014M 223M 792M 22% /boot
/dev/mapper/rhel-opt_mycom 100G 37G 63G 37% /opt/my
/dev/mapper/oradb-nimsdb 2.0T 1.5T 614G 71% /opt/my/data
/dev/mapper/redo-logs 305G 72G 234G 24% /opt/my/data/
/dev/mapper/rhel-home 20G 472M 20G 3% /home
/dev/mapper/rhel-var 20G 1.4G 19G 7% /var
tmpfs 7.9G 0 7.9G 0% /run/user/1000
total 3.6T 2.3T 1.4T 63% -
I.E. i would want a variable that has the value 63%
$variable = 63%
3
Answers
You can add
grep
andawk
to extract the info you want:Note that you need to change the types of quoting you are doing for this to work properly. Just copy and paste the above and you should be good.
Perhaps you can adapt this snippet for your needs:
https://gist.github.com/cschaba/4740323
sorry if i misunderstood the question how ever i think this could be the answer you are looking for… 🙂
Version 1:
PS. @ReynierPM you don’t require a shell_exec to get a full output return… you just have to define a array where you want to store the data in… 🙂 and granted its not a string but you could easily transform it into one by using implode()
Version 2:
Sorry If you disagree but i don’t feel comfortable just editing @Nazariy answer as I’m adding/changing to much (at this stage see edit history:).
Explanation:
*¹
array_map applies it too all values in the array
“array_map — Applies the callback to the elements of the given arrays”
*²
We first give it a callback function which will be called for every element, and pass it the variable $line (we use this to store the line created by the explode)
*³
We use the array_maps to explode by n (to create a array entry for evry new line) (We offcourse do an explode on $data)
*4
So now that every line is separated… We split the separated lines into substrings and store them in new variables.
preg_split(‘/s+/’,$line) splitting $line into an array without having to deal with the issue of multiple whitspaces. s standing for space.
Sorry for the formatting… will edit latter 🙂