2012-02-13 10 views
7

Sto scrivendo un piccolo strumento in cui ho bisogno di trovare per utente l'utilizzo della memoria del file system.come trovare l'utilizzo dello spazio su disco per utente?

Devo eseguire alcune attività di pulizia se l'utilizzo del file system sta superando un determinato valore di soglia. Qual è la chiamata di sistema che posso utilizzare, in modo da poter trovare l'utilizzo della memoria per utente?

+0

perché il tag pthreads? –

+1

Guarda la fonte di du. –

+1

utilizzo della memoria? disco! = memoria – sehe

risposta

0

Forse sei interessato a quote disco (che sono supportate da alcuni, ma non tutti, i filesystem). La chiamata di sistema di basso livello è quotactl(2). Forse utilizzare gli strumenti esistenti quota(1) e quotacheck, edquota, warnquota, quotaon ecc .... potrebbe essere sufficiente.

Se si desidera conoscere la memoria utilizzata da un determinato processo, considerare il syscall getrusage(2). Si può anche leggere pseudo-file sotto /proc/self/ o /proc/1234 per PID 1234. Per saperne di più proc(5) (ad es /proc/self/maps o /proc/1234/smaps ecc)

Naturalmente, considerano anche i comandi du(1) e df(1) (forse invocarli attentamente attraverso popen(3) se vuoi ottenere la loro uscita). Se per qualsiasi motivo si desidera eseguire la scansione ricorsiva di un albero di file (ad esempio per contare la dimensione utilizzata cumulativa come du), considerare l'utilizzo delle funzioni nftw(3). Vedi anche stat(2) e statfs(2) syscalls.

Ricordare che altri processi possono (e spesso fanno) scrivere sul filesystem mentre il programma lo sta esplorando o interrogando.

+0

Il mio problema è che quando eseguo 'quota', ottengo un 'operazione non consentita'. Perché? Forse è perché sta cercando di vedere la quota di tutti gli utenti, mentre sono solo permesso (e interessato) al mio. –

Problemi correlati