Existe uma maneira programática para determinar o espaço livre em disco em um servidor Linux?

1

Eu tenho uma coleção de servidores Linux, cada um dos quais tem um disco rígido local com um diretório / tmp. Ocasionalmente, o diretório / tmp em um servidor será preenchido e causará erros. Eu quero automatizar o processo de verificação de espaço livre em cada unidade local para que / tmp possa ser limpo antes que cause um problema. Existe uma maneira elegante e programática para determinar a quantidade de espaço livre em um disco no Linux? Eu sei que a resposta "clássica" é correr

df -h

em cada servidor (talvez usando uma ferramenta shell distribuída como dsh ) e escreva um script para analisar a saída. Muitos desses scripts podem ser encontrados on-line . Eu estou procurando uma solução mais elegante, como um utilitário de disco mais recente que retorna dados estruturados ou algumas informações enterradas no sistema de arquivos / proc.

    
por Craig Finch 31.07.2013 / 23:07

1 resposta

0

O comando DU usa statfs para coletar dados dos sistemas de arquivos montados. Os sistemas de arquivos montados parecem ser determinados observando o arquivo mtab.

# strace du /
...
open("/etc/mtab", O_RDONLY|O_CLOEXEC)   = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=793, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f6fdd497000
read(3, "/dev/mapper/vg-root / ext"..., 4096) = 793
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0x7f6fdd497000, 4096)            = 0
stat("/", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
statfs("/", {f_type="EXT2_SUPER_MAGIC", f_bsize=4096, f_blocks=118071114, f_bfree=115631354, f_bavail=109633684, f_files=29990912, f_ffree=29574660, f_fsid={-611634627, -1860045897}, f_namelen=255, f_frsize=4096}) = 0
...

Então, se você quiser conectar os detalhes, você pode rapidamente hackear um script python (ou qualquer outro) que chame statfs / statvfs e, em seguida, forneça as informações em qualquer formato que desejar.

    
por 01.08.2013 / 00:25