# Spazio disco (reprise)

**URL:** <https://www.ruby-forum.com/t/spazio-disco-reprise/115008>\
**Category:** IT\
**Created:** [September 19, 2007, 6:00pm UTC](https://www.ruby-forum.com/t/spazio-disco-reprise/115008 "2007-09-19T18:00:58Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![simone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/cab0a1/32.png) [@simone](https://www.ruby-forum.com/u/simone)\
**Post date:** [September 19, 2007, 6:00pm UTC](https://www.ruby-forum.com/t/spazio-disco-reprise/115008/1 "2007-09-19T18:00:58Z")

</div>

Salve  
come faccio a conoscere lo spazio libero su un disco in ruby (e s.o.  
linux)?  
Mi spiego meglio  
puts “il disco è quasi pieno” if spazio\_libero\_su\_disco\<1000  
ho cercato in tutti i modi ma non trovo niente.

---

<div class="post-metadata">

**Author:** ![simone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/cab0a1/32.png) [@simone](https://www.ruby-forum.com/u/simone)\
**Post date:** [September 20, 2007, 3:27pm UTC](https://www.ruby-forum.com/t/spazio-disco-reprise/115008/2 "2007-09-20T15:27:22Z")

</div>

Simone [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

> Salve  
> come faccio a conoscere lo spazio libero su un disco in ruby (e s.o.  
> linux)?

df\_output = `df -h`.to\_a.collect { |line| line.split }

disk = “/dev/disk0s2”

disk\_info = df\_output.find {|disk\_info| disk\_info[0] == disk }

spazio\_libero\_su\_disco = disk\_info[3]

> Mi spiego meglio  
> puts “il disco Ã¨ quasi pieno” if spazio\_libero\_su\_disco\<1000  
> ho cercato in tutti i modi ma non trovo niente.

Per curiosita’ quali sono “tutti” i modi?

---

<div class="post-metadata">

**Author:** ![simone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/cab0a1/32.png) [@simone](https://www.ruby-forum.com/u/simone)\
**Post date:** [September 19, 2007, 6:05pm UTC](https://www.ruby-forum.com/t/spazio-disco-reprise/115008/3 "2007-09-19T18:05:59Z")

</div>

Strace ti dice tutto:

statfs64("/", 84, {f\_type=“EXT2\_SUPER\_MAGIC”, f\_bsize=1024,  
f\_blocks=72041022, f\_bfree=61104709, f\_bavail=57444301,  
f\_files=9151488, f\_ffree=8531825, f\_fsid={1848060334, -1145266603},  
f\_namelen=255, f\_frsize=1024}) = 0  
statfs64("/sys", 84, {f\_type=“SYSFS\_MAGIC”, f\_bsize=4096, f\_blocks=0,  
f\_bfree=0, f\_bavail=0, f\_files=0, f\_ffree=0, f\_fsid={0, 0},  
f\_namelen=255, f\_frsize=4096}) = 0  
statfs64("/var/run", 84, {f\_type=0x1021994, f\_bsize=4096,  
f\_blocks=258353, f\_bfree=258318, f\_bavail=258318, f\_files=224143,  
f\_ffree=224073, f\_fsid={0, 0}, f\_namelen=255, f\_frsize=4096}) = 0  
statfs64("/var/lock", 84, {f\_type=0x1021994, f\_bsize=4096,  
f\_blocks=258353, f\_bfree=258353, f\_bavail=258353, f\_files=224143,  
f\_ffree=224141, f\_fsid={0, 0}, f\_namelen=255, f\_frsize=4096}) = 0  
statfs64("/proc/bus/usb", 84, {f\_type=0x1021994, f\_bsize=4096,  
f\_blocks=258353, f\_bfree=258322, f\_bavail=258322, f\_files=224143,  
f\_ffree=221184, f\_fsid={0, 0}, f\_namelen=255, f\_frsize=4096}) = 0  
statfs64("/dev", 84, {f\_type=0x1021994, f\_bsize=4096, f\_blocks=258353,  
f\_bfree=258322, f\_bavail=258322, f\_files=224143, f\_ffree=221184,  
f\_fsid={0, 0}, f\_namelen=255, f\_frsize=4096}) = 0  
statfs64("/dev/shm", 84, {f\_type=0x1021994, f\_bsize=4096,  
f\_blocks=258353, f\_bfree=258353, f\_bavail=258353, f\_files=224143,  
f\_ffree=224142, f\_fsid={0, 0}, f\_namelen=255, f\_frsize=4096}) = 0  
statfs64("/dev/pts", 84, {f\_type=“DEVPTS\_SUPER\_MAGIC”, f\_bsize=4096,  
f\_blocks=0, f\_bfree=0, f\_bavail=0, f\_files=0, f\_ffree=0, f\_fsid={0,  
0}, f\_namelen=255, f\_frsize=4096}) = 0  
statfs64("/boot", 84, {f\_type=“EXT2\_SUPER\_MAGIC”, f\_bsize=1024,  
f\_blocks=197599, f\_bfree=160084, f\_bavail=150044, f\_files=25200,  
f\_ffree=25162, f\_fsid={-544709901, 123230591}, f\_namelen=255,  
f\_frsize=1024}) = 0  
statfs64("/lib/modules/2.6.20-16-generic/volatile", 84,  
{f\_type=0x1021994, f\_bsize=4096, f\_blocks=258353, f\_bfree=249906,  
f\_bavail=249906, f\_files=224143, f\_ffree=224126, f\_fsid={0, 0},  
f\_namelen=255, f\_frsize=4096}) = 0  
statfs64("/proc/sys/fs/binfmt\_misc", 84, {f\_type=0x42494e4d,  
f\_bsize=4096, f\_blocks=0, f\_bfree=0, f\_bavail=0, f\_files=0, f\_ffree=0,  
f\_fsid={0, 0}, f\_namelen=255, f\_frsize=4096}) = 0  
write(1, “Filesystem Size Used Avail Use% Mounted  
on\n/dev/sda6 69G 11G 55G 16% /\nvarrun  
1010M 140K 1010M 1% /var/run\nvarlock 1010M 0  
1010M 0% /var/lock\nprocbususb 1010M 124K 1010M 1%  
/proc/bus  
/usb\nudev 1010M 124K 1010M 1% /dev\ndevshm  
1010M 0 1010M 0% /dev/shm\n/dev/sda3 193M  
37M 147M 21% /boot\ntmpfs 1010M 33M 977M 4%  
/lib/modules/2.6.20-16-generic/volatil”…, 502) = 502

Non so, poi, se esiste una libreria ruby per interfacciarti a quel  
syscall - al limite scrivi una piccola estensione in C.
