0

次のテキストブロックを含む$driveusageという変数があります。

Filesystem     Type      Size  Used Avail Use% Mounted on
rootfs         rootfs    111G  8.7G   96G   9% /
/dev/sda1      ext3      111G  8.7G   96G   9% /
devtmpfs       devtmpfs   59M     0   59M   0% /dev
tmpfs          tmpfs      61M     0   61M   0% /dev/shm
tmpfs          tmpfs      61M  264K   60M   1% /run
tmpfs          tmpfs      61M     0   61M   0% /sys/fs/cgroup
tmpfs          tmpfs      61M   16K   61M   1% /tmp

rootfs行からのみ、個別の変数つまり、、、、、配列ではない)$drivesize、、、$driveused$drivefreeおよび数値のみsize、および数値のみ(10進数を含む)にデータを抽出する必要があります。値を超えると、(小数点なしで)と表示され、 アベイルズが下に下がった場合と同じように表示されることに注意してください。usedavail
used9.9G10G10G9.9G

私はすべての組み合わせを試しましpreg_replace()たが、それらの複雑な表現が苦手です。:(

あなたが提供できるどんな助けでも大いに感謝されるでしょう:)

4

1 に答える 1

1

これが私が得たものです:

$df_info = explode(' ', shell_exec("df -H / | tail -1 | tr -s ' ' | cut -d ' ' -f 2,3,4"));
$df = array(
    'size'      => $df_info[0],
    'used'      => $df_info[1],
    'available' => $df_info[2],
);

df -H /ディスクに関する人間が読める形式の情報をtail -1取得し、その最後の行(重要な数字、およびその行tr -s ' ' | cut -d ' ' -f 2,3,4の2番目、3番目、および4番目のエントリ( "size"、 "used"、および "avail")を取得します。

于 2012-12-26T05:41:45.763 に答える