LINUX.ORG.RU

Ответ на: комментарий от kirill_s

нет такой возможности,
а надо определить кто это!
просто катастрофа,
пробовал с find, да какая то чушь получается:
find . -type f -atime 0 -exec ls -l {}\; >file.txt
потом cat file.txt | sort -k 5
но эта инфа не очень полезна, как можно
лучше выявить?

спасибо

anonymous
()

du -s /home/* | sort -n
выдаст спиок директорий в /home с их размерами, отсортированными по увеличению.

Kirill
()

якi адмiни такi ж у сраку й користувачi

anonymous
()
Ответ на: комментарий от anonymous

>но эта инфа не очень полезна, как можно лучше выявить?

1. du -xk | sort -rn | less

И смотришь сверху. Позволяет найти большие каталоги.

2. find . -type f -printf '%u %k' | ... просуммируй 2е поле по первому | sort -rn | less

Так узнаешь(возможно) кто больше использует.

3. Собери такую информацию когда места хватает и если прижмет - сравни с текущей. Этого я еще не делал - но видимо скоро буду. Должно показать где/кто было откушено.

Найди постояннорастущие каталоги и поставь там автоматическое зажатие старых файлов.

4. Купи за 10k$ маленький дисковый массив IDE-to-iSCSI, терабайт на несколько и забудь на год об этой проблеме. Через год - повтори, или убей неиспользованые файлы.

DonkeyHot ★★★★★
()
Ответ на: комментарий от DonkeyHot

5. А как насчет такого медленного скриптика? :) Пока клепал его, много
неожиданного узнал о bash :))))))))

#!/bin/bash
                                                                                                                             
for_each_user() {
        find /home -type d -mindepth 1 -maxdepth 1 -exec basename {} \;
}
                                                                                                                             
get_user_blocks() {
        find /home -type f -size +0c -user "$username" | while read filename; do
                echo "`du "$filename" | cut -f1`"
        done | awk '{ a+=$1 } END { print a }'
}
                                                                                                                             
for_each_user | while read username; do
        echo "$username:`get_user_blocks`"
done


Запускаем:
# /usr/local/sbin/get_usage.sh
rihad:118364
#

Можно похоже сортить с 
# /usr/local/sbin/get_usage.sh | sort -t: -nr -k2
Не пробовал, у меня только я один юзер :)

rihad
()
Ответ на: комментарий от rihad

Чуток поменял get_user_blocks и теперь работаем раз в 10 быстрее! Хорошо :)

#!/bin/bash
                                                                                                                             
for_each_user() {
        find /home -type d -mindepth 1 -maxdepth 1 -exec basename {} \;
}
                                                                                                                             
get_user_blocks() {
        find /home -type f -size +0c -user "$username" -print0 | xargs -0 du \
                        | awk '{ a+=$1 } END { print a }'
}
                                                                                                                             
for_each_user | while read username; do
        echo "$username:`get_user_blocks`"
done

rihad
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.