Php kabuk çıktı maipulate nasıl

2 Cevap php

I am trying to write php script which does some shell functions like reporting. So i am starting with diskusage report

Ben biçimi aşağıdaki istiyorum

drive path ------------total-size --------free-space

Başka bir şey

Benim senaryom

$output = shell_exec('df -h -T');
echo "<pre>$output</pre>";

ve çıktıya aşağıdaki gibidir

Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/sda6     ext3     92G  6.6G   81G   8% /
none      devtmpfs    3.9G  216K  3.9G   1% /dev
none         tmpfs    4.0G  176K  4.0G   1% /dev/shm
none         tmpfs    4.0G  1.1M  4.0G   1% /var/run
none         tmpfs    4.0G     0  4.0G   0% /var/lock
none         tmpfs    4.0G     0  4.0G   0% /lib/init/rw
/dev/sdb1     ext3    459G  232G  204G  54% /media/Server
/dev/sdb2  fuseblk    466G  254G  212G  55% /media/BACKUPS
/dev/sda5  fuseblk    738G  243G  495G  33% /media/virtual_machines

Nasıl ben bu çıkışına benim formasyonuna çevirebilirim \ keçeleşmiş çıktı

2 Cevap

Böyle bir şey:

// Use awk to pull out the columns you actually want
$output = shell_exec('df -h -T | awk \'{print $1 " " $3 " " $5}\'');
// Split the result into an array by lines (removing the final linefeed)
$drives = split("[\r|\n]", trim($output));
// Chuck away the unused first line
array_shift($drives);

echo "<pre>drive path\ttotal-size\tfree-space\n";

foreach($drives as $drive) {
    // Explode the individual lines to get the values
    $values = explode(" ", $drive);
    echo $values[0], "\t", $values[1], "\t", $values[2], "\n";
}

echo "</pre>";

Neyse gitmeliyim

Yerine neden PHP'nin disk_total_space() kullanın ve disk_free_space() fonksiyonlar değil? Aksi takdirde, tek yönlü Sayılara 'm' karakteri, 'k', 'g' dönüştürmek, preg_ işlevlerini kullanarak çok boyutlu bir diziye $ çıkışını ayrıştırmak ve sütun toplam gelebilir. Sütun uzayı, tek bir sekme karakteri veya alanlarda bir dizi sayı ise Alternatif olarak, çok boyutlu bir diziye sadece explode() her satırı olabilir.