Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: Marbo - 29.03.07 - klo:03.00

Otsikko: Levytilankäyttömäärä nettiin?
Kirjoitti: 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?
Otsikko: Vs: Levytilankäyttömäärä nettiin?
Kirjoitti: Jantunen - 29.03.07 - klo:09.56
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:
Koodia: [Valitse]
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.
Otsikko: Vs: Levytilankäyttömäärä nettiin?
Kirjoitti: Marbo - 29.03.07 - klo:11.40
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.
Otsikko: Vs: Levytilankäyttömäärä nettiin?
Kirjoitti: Jantunen - 29.03.07 - klo:12.13
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:

Koodia: [Valitse]
$ 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. :)
Otsikko: Vs: Levytilankäyttömäärä nettiin?
Kirjoitti: Marbo - 29.03.07 - klo:13.45
Hmm.. :D nyt kyl jäädyin pahasti. :D Noh pitää koittaa kehittää jotain.
Otsikko: Vs: Levytilankäyttömäärä nettiin?
Kirjoitti: Marbo - 29.03.07 - klo:17.42
Nyt olen testaillut sitä ja saanut sen vaan tulostamaan:
Koodia: [Valitse]
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:
Koodia: [Valitse]
<?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?
Otsikko: Vs: Levytilankäyttömäärä nettiin?
Kirjoitti: Fa1r - 29.03.07 - klo:17.47
Nyt olen testaillut sitä ja saanut sen vaan tulostamaan:
Koodia: [Valitse]
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:
Koodia: [Valitse]
<?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. )
Otsikko: Vs: Levytilankäyttömäärä nettiin?
Kirjoitti: Marbo - 29.03.07 - klo:17.57
Nyt olen testaillut sitä ja saanut sen vaan tulostamaan:
Koodia: [Valitse]
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:
Koodia: [Valitse]
<?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.
Otsikko: Vs: Levytilankäyttömäärä nettiin?
Kirjoitti: Tonde - 29.03.07 - klo:18.10
Ja ton tulostamiseen netissä olen käyttänyt:
Koodia: [Valitse]
<?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.
Otsikko: Vs: Levytilankäyttömäärä nettiin?
Kirjoitti: Marbo - 29.03.07 - klo:18.26
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?

Otsikko: Vs: Levytilankäyttömäärä nettiin?
Kirjoitti: Tonde - 29.03.07 - klo:18.36
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.
Otsikko: Vs: Levytilankäyttömäärä nettiin?
Kirjoitti: Melmacian - 29.03.07 - klo:18.41
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?
Koodia: [Valitse]
df -h
Koodia: [Valitse]
<?php
$output 
shell_exec("df -h");
echo 
"<pre>$output</pre>";
?>

?
Otsikko: Vs: Levytilankäyttömäärä nettiin?
Kirjoitti: Tonde - 29.03.07 - klo:19.04
niin ja suodatusta voit tehdä vaikkapa näin:

Koodia: [Valitse]
<?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>"

?>

Otsikko: Vs: Levytilankäyttömäärä nettiin?
Kirjoitti: Marbo - 30.03.07 - klo:08.41
niin ja suodatusta voit tehdä vaikkapa näin:

Koodia: [Valitse]
<?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.
Otsikko: Vs: Levytilankäyttömäärä nettiin?
Kirjoitti: Jantunen - 30.03.07 - klo:09.01
Kokeileppa tuota:

Koodia: [Valitse]
<?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

Koodia: [Valitse]
du /home/tiedosto -s -h
Otsikko: Vs: Levytilankäyttömäärä nettiin?
Kirjoitti: Marbo - 30.03.07 - klo:09.24
Kokeileppa tuota:

Koodia: [Valitse]
<?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

Koodia: [Valitse]
du /home/tiedosto -s -h

Kiitoksia paljon. Tämä toimiipi. :)
Otsikko: Vs: Levytilankäyttömäärä nettiin?
Kirjoitti: _Pete_ - 30.03.07 - klo:10.43
http://phpsysinfo.sourceforge.net/

Tuolla näkee kanssa kaikenlaista tarpeellista ja tarpeetonta...