Newsgroup: it.comp.os.linux.sys
Titolo: Mi mandate l'output di df

All'interno di un mio programma opensource ho una funzione che fa il 
parsing dell'output di 'df' per capire quali sono le partizioni.
Mi è stato riferito che il parsing fallisce in alcuni casi particolari. 
Ad esempio quando si usa LVM. Non sono riuscito a farmi dare maggiori 
informazioni e io non uso LVM quindi non riesco a riprodurre il baco.
Qualcuno che ha LVM mi manda per piacere l'ouput del comando
	df
e del comando
	df -P
Lo puo' fare anche qualcuno che pensa di avere una configurazione 
particolarmente strana di partizioni?
-- 
Andrea Francia
http://andreafrancia.blogspot.com/2008/06/relazioni-molti-molti-con-jpa.html

 informazioni e io non uso LVM quindi non riesco a riprodurre il baco.
Magari non c'entra nulla (anzi, probabilmente), comunque ti consiglio se
possibile di usare df -P in modo da avere un formato uniforme che e' sempre
lo stesso.

 sempre lo stesso.
Ok, come non detto. Non avevo letto bene il tuo messaggio...

 particolarmente strana di partizioni?
Che cosa fa il tuo parser? Cosa "parsa"?
bye,
-- 
piergiorgio


Vorrei capire se il df -P funziona anche con df non gnu.


 Vorrei capire se il df -P funziona anche con df non gnu.
Dovrebbe essere fatto apposta... 

 Che cosa fa il tuo parser? Cosa "parsa"?
Non è proprio mio perché l'ho preso già fatto sperando di non dover 
reinvetare al ruota e sperando di aver a che fare con un parser già 
testato e funzionante.
Quello che dovrebbe fare è elencare tutti i mount points presenti sulla 
macchina. Per farlo parsa l'output di df.
E' un metodo stupido perché esiste già una funzione di libreria C che lo 
fa, peccato che in python non ci sia. Io vorrei evitare di fare un 
estensione python in C per ottenere questa informazione.



Vorrei essere sicuro. Ho provato a chiedere su i.c.o.unix se qualcuno mi 
mandava l'output su uno unix piuttosto che su un linux. Non ho ancora 
ricevuto risposta.


 
Per esempio su HP UNIX non funzionerebbe: non c'e' l'opzione "-P".
http://www.informatik.uni-frankfurt.de/doc/man/hpux/df.1m.html
Potrei mettere "-P" per farlo funzionare su Linux con LVM e poi 
quando/se qualcuno su HP o altri UNIX si lamenta vedere cosa fare.
Fare qualcosa di portabile sembra proprio difficile.


 ricevuto risposta.
E' un'opzione POSIX, quindi se qualche versione di df (in qualunque sistema
operativo) non la supporta, allora significa che non e' POSIX-compliant, e
probabilmente non vale la pena perderci troppo tempo.

 Fare qualcosa di portabile sembra proprio difficile.
Sicuramente non e' facile, ma penso che l'unica sia usare solo feature
POSIX.

 
http://www.linux.com/feature/138331
La differenza tra "df" e "df -P" e` che il primo stampa,
quando il mount point e` troppo lungo (come nel caso di
LVM), qualcosa come:
/dev/mapper/bla-bla
                 123    456    789   10%   /my/mount/point
mentre il secondo:
/dev/mapper/bla-bla 123 456 789 10% /my/mount
che e` piu` "parsabile", dato che "df" da solo spezza la
linea in due distinte.
Questo e` anche spiegato nell'articolo che hai citato,
anche se senza esempi concreti.
bye,
-- 
piergiorgio

 	df -P
lem@HARDYCOMP:~$ df
File system         blocchi di   1K   Usati Disponib. Uso% Montato su
/dev/sdb5             10883628   5202528   5681100  48% /
varrun                 3062924       104   3062820   1% /var/run
varlock                3062924         0   3062924   0% /var/lock
udev                   3062924       168   3062756   1% /dev
devshm                 4500000     25640   4474360   1% /dev/shm
lrm                    3062924     43040   3019884   2% /lib/modules/2.6.24-19-generic/volatile
/dev/sdb4              1035692    113336    869744  12% /boot
/dev/mapper/var       16577536   1128080  15449456   7% /var
/dev/md0              20481928   7523196  12958732  37% /usr
/dev/md1              15346084   1109936  14236148   8% /chroot
/dev/sda3             50169624  29642452  20527172  60% /home
/dev/mapper/spazio1-LV1
                     426396964 276310360 150086604  65% /media/LV1
/dev/sda4            240686472  27295300 213391172  12% /media/archivio
/dev/mapper/ibox      18929088  15733744   3195344  84% /media/ibox
gvfs-fuse-daemon      10883628   5202528   5681100  48% /home/lem/.gvfs
lem@HARDYCOMP:~$ df -P
File system         1024-blocks      Used Available Capacity Montato su
/dev/sdb5             10883628   5202528   5681100      48% /
varrun                 3062924       104   3062820       1% /var/run
varlock                3062924         0   3062924       0% /var/lock
udev                   3062924       168   3062756       1% /dev
devshm                 4500000     25640   4474360       1% /dev/shm
lrm                    3062924     43040   3019884       2% /lib/modules/2.6.24-19-generic/volatile
/dev/sdb4              1035692    113336    869744      12% /boot
/dev/mapper/var       16577536   1127952  15449584       7% /var
/dev/md0              20481928   7523196  12958732      37% /usr
/dev/md1              15346084   1109936  14236148       8% /chroot
/dev/sda3             50169624  29642452  20527172      60% /home
/dev/mapper/spazio1-LV1 426396964 276310360 150086604      65% /media/LV1
/dev/sda4            240686472  27295300 213391172      12% /media/archivio
/dev/mapper/ibox      18929088  15733744   3195344      84% /media/ibox
gvfs-fuse-daemon      10883628   5202528   5681100      48% /home/lem/.gvfs
L'unica differenza la vedi anche tu, e non mi pare affatto dipenda
direttamente da LVM.
Dipende dalla lunghezza dell'identificativo del device: a volte quel
"mapper" in più fa la differenza, il device sfora la prima colonna e
senza l'opzione -P l'output va a capo...
-- 
Bye, Lem
Ceterum censeo ISLAM esse delendum
__________________________________
Combatti l'AIDS col tuo computer: 
http://fightaidsathome.scripps.edu/
Monitora gli asteroidi col tuo computer: 
http://orbit.psi.edu/

 
# uname -a
OSF1 
x.invalid.it
 V4.0 1229 alpha
# df -P
Filesystem        512-blocks        Used   Available Capacity  Mounted on
root_domain#root      262144      167054       80832    68%    /
/proc                      0           0           0   100%    /proc
usr_domain#usr      11239984     3372768     7796624    31%    /usr
var_domain#var       2077088      183980     1861744     9%    /var
/dev/rzb16a         22934504     5001884    15639168    25%    /home2
extern:/atom      102398304    44759584    57638720    44%    /home2/atom
#
-- 
           |Save our planet!
    Ciao   |Save wildlife!
   roberto |For your E-MAIL use ONLY recycled Bytes  !!
           |roberto poggi   
rpo...@softhome.net

 POSIX.
Dovrei trovare le specifiche POSIX allora.



Ok, allora la metto, perfetto, grazie.


 Dovrei trovare le specifiche POSIX allora.
Pronti:
http://www.opengroup.org/onlinepubs/009695399/
e df e' qui:
http://www.opengroup.org/onlinepubs/009695399/utilities/df.html

 senza l'opzione -P l'output va a capo...
Ok grazie.


Grazie a tutti.
Sono a posto adesso.
Ho deciso che userò l'opzione '-P' e aggiungerò tra i requisiti per 
l'installazione che sia presente il df POSIX.
Gli output che mi avete mandato li userò per fare i test di unità per il 
metodo di parsing.


 quando il mount point e` troppo lungo (come nel caso di
Cioe`: "quando il mount device", non il mount point...
bye,
-- 
piergiorgio

 sempre.
Supportare i sistemi non posix non è negli scopi del progetto, quindi va 
bene come soluzione.
Se potessi accedere a una soluzione costo zero piu' portatibile la 
preferirei, ma ci sono altre cose piu' importanti da risolvere prima. 
Per adesso mi basta aggiungere -P.
Se qualcuno vuole contribuire è il benvenuto.


 writes:
AF> Vorrei essere sicuro. Ho provato a chiedere su i.c.o.unix se
AF> qualcuno mi mandava l'output su uno unix piuttosto che su un
AF> linux. Non ho ancora ricevuto risposta.
Un po' di pazienza: ho approvato il post appena adesso :-).
Saluti,
Luca Polo.
-- 
Luca...@gest.unipd.it
 --- 
http://www.gest.unipd.it/~jake
----------------------------------------------------------
One Ping to rule them all. One Ping to find them.
One Ping to bring down them all.
And in the darkness crash them.         [The Lord of the Pings]