2012-02-13 16 views
7

Estoy escribiendo una pequeña herramienta en la que necesito encontrar el uso de la memoria del sistema de archivos por usuario.cómo encontrar el uso de espacio de disco por usuario?

Tengo que hacer alguna actividad de limpieza si el uso del sistema de archivos está cruzando cierto valor de umbral. ¿Cuál es la llamada al sistema que puedo usar para poder encontrar el uso de la memoria por usuario?

+0

¿por qué la etiqueta pthreads? –

+1

Mira la fuente de du. –

+1

¿uso de memoria? disk! = memoria – sehe

Respuesta

0

Quizás esté interesado en cuotas de disco (que son compatibles con algunos, pero no todos, los sistemas de archivos). La llamada al sistema de bajo nivel es quotactl(2). Quizás utilizando las herramientas existentes quota(1) y quotacheck, edquota, warnquota, quotaon etc ... podría ser suficiente.

Si desea conocer la memoria utilizada por un proceso determinado, considere el getrusage(2) syscall. También puede leer pseudo-archivos bajo /proc/self/ o /proc/1234 para pid 1234. Más información acerca de proc(5) (por ejemplo /proc/self/maps o /proc/1234/smaps etc)

Por supuesto, también se consideran los comandos du(1) y df(1) (tal vez ellos invocar cuidadosamente través popen(3) si quieres obtener su resultado). Si por cualquier razón desea escanear recursivamente un árbol de archivos (por ejemplo, para contar su tamaño de uso acumulado como lo hace du), considere usar las funciones nftw(3). Ver también stat(2) y statfs(2) syscalls.

Recuerde que otros procesos pueden (y muchas veces lo hacen) escribir en el sistema de archivos mientras su programa lo explora o lo consulta.

+0

Mi problema es que cuando ejecuto 'quota', obtengo una' operación no permitida'. ¿Porque eso? Tal vez es porque está tratando de ver la cuota de todos los usuarios, mientras que solo estoy permitido (e interesado) en el mío. –

Cuestiones relacionadas