Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: Marbo - 29.03.07 - klo:03.00
-
Osaiskohan joku kertoa jotain helppoa konstia miten saisin tiedon käytetystä levytilasta ja se uppisi automaattisesti sen nettin? Esimerkiksi jos haluaisi kansion /home/käyttäjä/jotain/ ja ton kansion koon sais upittua nettiin? Ja se päivittyisi kun sinne lisää tiedostoa tai poistaa tiedostoja?
-
Et hirveän tarkasti määritellyt varsinaista tarvetta tai sitä, millaisena haluat tuon levytilankäytön näkyvän, mutta ensimmäisenä tulisi mieleen käyttää du-komentoa sekä cronia.
esim croniin asettaa jotain tällaista:
du /home/käyttäjä/jotain > levytilankaytto.txt
Näin saat tuon levynkäytön talteen, ja jää enää jäljelle tuon siirtäminen palvelimelle, eli jos uppimisella tarkoitat ftp-siirtoa ja php-ohjelmointi on tuttua sekä koneessasi on php asennettuna komentorivitulkkina, kannattaa katsoa tuolta:
http://fi2.php.net/manual/en/ref.ftp.php (http://fi2.php.net/manual/en/ref.ftp.php)
php:tä käyttämällä on myös mahdollista käynnistää tuo du-komentto ja ottaa sen tuloste talteen (vaikkapa väliaikaistiedostoon), jonka jälkeen se voidaan upata halutulle palvelimelle.
-
Elikkä kun minulla on nettisivut omalla palvelimella, ja siellä on muutamalla kaverilla myös omat osiot. Ja haluaisin nettiin tulevan niiden tilankäytön jotain esim. 100mb/300mb.
Ja mieluiten php:llä toteutettu.
-
Eli temppu helpottuu kummasti, kun palvelimen pitää "vain" näyttää oman levyosion/osioiden tilankäyttö.
tuolta http://fi2.php.net/manual/en/function.shell-exec.php (http://fi2.php.net/manual/en/function.shell-exec.php) saat vinkkejä komennon suorittamiseen sekä tulosteen talteenottoon.
Tässä tapauksessa komento df antanee sopivamman tulosteen, eli esim itselläni:
$ df /dev/sda1
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 307663812 197462168 94573212 68% /home
Eli käytännössä tavalla tai toisella pilkot tuon toisen rivin välilyöntien/sarkainten kohdalta osiin (explode-funktio tai preg_splitillä http://fi2.php.net/manual/en/function.preg-split.php (http://fi2.php.net/manual/en/function.preg-split.php)) ja näytät saadun taulukon solut 2 ja 3.
Näillä vinkeillä päässet varmaan alkuun, google sekä varsin erinomainen ja kattava php-manuaali (http://fi2.php.net/manual/en/ (http://fi2.php.net/manual/en/)) jelppinee lopussa. :)
-
Hmm.. :D nyt kyl jäädyin pahasti. :D Noh pitää koittaa kehittää jotain.
-
Nyt olen testaillut sitä ja saanut sen vaan tulostamaan:
total 164
-rw-r--r-- 1 marbo marbo 325 Mar 21 11:04 asetukset.php
-rw-r--r-- 1 marbo marbo 133 Mar 20 17:39 error.php
-rw-r--r-- 1 marbo marbo 101 Mar 27 01:07 etusivu.php
drwxr-xr-x 2 marbo marbo 4096 Mar 27 00:57 images
-rw-r--r-- 1 marbo marbo 2515 Mar 27 01:38 index.php
-rw-r--r-- 1 marbo marbo 776 Mar 26 14:58 info.php
Ja ton tulostamiseen netissä olen käyttänyt:
<?php
$output = shell_exec('ls -l');
shell_exec('cd /var/www');
echo "<pre>$output</pre>";
?>
Mutta haluaisin että se tulostais vaan sen koon, ei mitään ylinmäärästä tekstiä, oliskos mahollista?
-
Nyt olen testaillut sitä ja saanut sen vaan tulostamaan: total 164
-rw-r--r-- 1 marbo marbo 325 Mar 21 11:04 asetukset.php
-rw-r--r-- 1 marbo marbo 133 Mar 20 17:39 error.php
-rw-r--r-- 1 marbo marbo 101 Mar 27 01:07 etusivu.php
drwxr-xr-x 2 marbo marbo 4096 Mar 27 00:57 images
-rw-r--r-- 1 marbo marbo 2515 Mar 27 01:38 index.php
-rw-r--r-- 1 marbo marbo 776 Mar 26 14:58 info.php
Ja ton tulostamiseen netissä olen käyttänyt:
<?php
$output = shell_exec('ls -l');
shell_exec('cd /var/www');
echo "<pre>$output</pre>";
?>
Mutta haluaisin että se tulostais vaan sen koon, ei mitään ylinmäärästä tekstiä, oliskos mahollista?
ainakin man du ilmoittaa että argumentti -c "Displays a grand total", ja -h tekee tulosteesta helpommin luettavaa ( ts. muuttaa koot kiloiksi, megoiksi, gigoiksi jne. )
-
Nyt olen testaillut sitä ja saanut sen vaan tulostamaan: total 164
-rw-r--r-- 1 marbo marbo 325 Mar 21 11:04 asetukset.php
-rw-r--r-- 1 marbo marbo 133 Mar 20 17:39 error.php
-rw-r--r-- 1 marbo marbo 101 Mar 27 01:07 etusivu.php
drwxr-xr-x 2 marbo marbo 4096 Mar 27 00:57 images
-rw-r--r-- 1 marbo marbo 2515 Mar 27 01:38 index.php
-rw-r--r-- 1 marbo marbo 776 Mar 26 14:58 info.php
Ja ton tulostamiseen netissä olen käyttänyt:
<?php
$output = shell_exec('ls -l');
shell_exec('cd /var/www');
echo "<pre>$output</pre>";
?>
Mutta haluaisin että se tulostais vaan sen koon, ei mitään ylinmäärästä tekstiä, oliskos mahollista?
ainakin man du ilmoittaa että argumentti -c "Displays a grand total", ja -h tekee tulosteesta helpommin luettavaa ( ts. muuttaa koot kiloiksi, megoiksi, gigoiksi jne. )
Oli siitä nyt vähän hyötyä, että sai edes vähän kivoimmiksi niit lukuja, mut vieläkään en saa pelkkää kansion kokoa.
-
Ja ton tulostamiseen netissä olen käyttänyt:
<?php
$output = shell_exec('ls -l');
shell_exec('cd /var/www');
echo "<pre>$output</pre>";
?>
Olet siis yrittänyt tulostaa levyn kokoa "ls -l"-komennolla :)
vaihda php:ssä kohtaan 'ls -l' komento, jonka haluat suorittaa skriptissä ja kohtaan 'cd /var/www' hakemisto, josta tietoja haluat kalastella. Senhän voi ottaa luultavasti kokonaan poiskin, kun ei taida tarvita erikseen siirtyä mihinkään kansioon, jotta levynkäyttöä voi analysoida.
-
Olet siis yrittänyt tulostaa levyn kokoa "ls -l"-komennolla :)
vaihda php:ssä kohtaan 'ls -l' komento, jonka haluat suorittaa skriptissä ja kohtaan 'cd /var/www' hakemisto, josta tietoja haluat kalastella. Senhän voi ottaa luultavasti kokonaan poiskin, kun ei taida tarvita erikseen siirtyä mihinkään kansioon, jotta levynkäyttöä voi analysoida.
No elikkäs, ongelma tässä lähinnä on se, että en teidä oikeaa komentoa? Olen yrittänyt montaa mutta en tiedä millä komennolla saa pelkän levytilan käytön vaikka mb:nä yms?
-
Minä en ainakaan löytänyt mitään erityistä ohjelmaa, joka kertoisi levynkäytön ja vapaana olevan tilan. df -h |grep home antaa kotihakemiston levynkäytön... Jos et löydä hakukoneella tai muuten haluamaasi, pitää sitten PHP:llä tai jollain parsia haluamasi ulkoasu.
-
No elikkäs, ongelma tässä lähinnä on se, että en teidä oikeaa komentoa? Olen yrittänyt montaa mutta en tiedä millä komennolla saa pelkän levytilan käytön vaikka mb:nä yms?
df -h
<?php
$output = shell_exec("df -h");
echo "<pre>$output</pre>";
?>
?
-
niin ja suodatusta voit tehdä vaikkapa näin:
<?php
$output = shell_exec("df -h|grep Tiedosto");
$output2 = shell_exec("df -h|grep sd"); //jos omistat sata-kiintolevyn toimii tällä.
//$output2 = shell_exec("df -h|grep hd"); //jos omistat ide-kiintolevyn käytä tätä.
echo "<pre>$output</pre>";
echo "<pre>$output2</pre>"
?>
-
niin ja suodatusta voit tehdä vaikkapa näin:
<?php
$output = shell_exec("df -h|grep Tiedosto");
$output2 = shell_exec("df -h|grep sd"); //jos omistat sata-kiintolevyn toimii tällä.
//$output2 = shell_exec("df -h|grep hd"); //jos omistat ide-kiintolevyn käytä tätä.
echo "<pre>$output</pre>";
echo "<pre>$output2</pre>"
?>
Kiitos tämä oli hyvä. :) Vielä pitää vaan kattoo miten saa jonkun tietyn kansion laitettua näkyviin, esim. /home/marbo/www tai jotain.
-
Kokeileppa tuota:
<?php
$output = shell_exec("df -h | grep /dev/sda1"); //itselläni SATA-levy tuolla
$output_palaset = preg_split("/[\s]+/", $output);
print('<pre>');print_r($output_palaset);print('</pre>');
?>
Eli tuo preg_split noilla parametreilla pilkkoo merkkijonon palasiksi white-space-merkkien kohdalta (välilyönnit, sarkaimet jne)
jonkun kansion tiedot saat vastaavasti muuttamalla tuon komennon muotoon
du /home/tiedosto -s -h
-
Kokeileppa tuota:
<?php
$output = shell_exec("df -h | grep /dev/sda1"); //itselläni SATA-levy tuolla
$output_palaset = preg_split("/[\s]+/", $output);
print('<pre>');print_r($output_palaset);print('</pre>');
?>
Eli tuo preg_split noilla parametreilla pilkkoo merkkijonon palasiksi white-space-merkkien kohdalta (välilyönnit, sarkaimet jne)
jonkun kansion tiedot saat vastaavasti muuttamalla tuon komennon muotoon
du /home/tiedosto -s -h
Kiitoksia paljon. Tämä toimiipi. :)
-
http://phpsysinfo.sourceforge.net/
Tuolla näkee kanssa kaikenlaista tarpeellista ja tarpeetonta...