为连接的设备排序槽命令行输出

时间:2015-12-22 20:35:55

标签: php ubuntu shell-exec

我在我的Raspberry PI上使用PHP,并且我试图在USB驱动器上找到一个文件,这将是每分钟的cron工作......

该文件有一个我每次都知道的名字(settings.txt),我有所需的输出来弄清楚我有什么驱动器.. 现在我无法弄清楚如何对它们进行排序......

我把它们全部写入一个文本文件,但是它们在每一行上都没有用\ n间隔而在它们之间没有用\ t间距...怎样才能得到" Mounted On" ?

输出:

Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/root        3648564 3479396    152784  96% /
devtmpfs          469756       0    469756   0% /dev
tmpfs             474060     452    473608   1% /dev/shm
tmpfs             474060    6928    467132   2% /run
tmpfs               5120       4      5116   1% /run/lock
tmpfs             474060       0    474060   0% /sys/fs/cgroup
/dev/mmcblk0p1     65480   20256     45224  31% /boot
tmpfs              94812      48     94764   1% /run/user/1000
/dev/sda1       15625744 5330752  10294992  35% /media/kristian/D81C-745F

设备信息: 操作系统:Ubuntu Mate 15。** PHP:5.6

2 个答案:

答案 0 :(得分:0)

我为此使用awk。它默认按空格分割。对于我的Mac,它是9美元,而对于我的Centos盒子,它的价格为6美元。只取决于您的值是哪一列。看起来好像是6美元。

df  | awk '{print $6}'                                                                       

Mounted
/
/tmp
/usr/local
/var
/dev
/Volumes/MobileBackups
/Volumes/AppCode
/Volumes/LaCie

答案 1 :(得分:0)

我想我可以在搜索几个小时后使用此代码:

<?php
$df = array();
echo "reading `df` command \n";
exec("df -T -x tmpfs -x devtmpfs -P -B 1G",$df);
array_shift($df);
$Stats = array();
foreach($df as $disks){
    $split = preg_split('/\s+/', $disks);
    $Stats[] = array(
        'disk'      => $split[0],
        'mount'     => $split[6],
        'type'      => $split[1],
        'mb_total'  => $split[2],
        'mb_used'   => $split[3],
        'mb_free'   => $split[4],
        'percent'   => $split[5],
    );
}
echo "Completed device scan... \n";