Ищу серию команд, которые покажут мне самые большие файлы на диске.
Если вам просто нужно найти большие файлы, вы можете использовать find
с -size
вариант. Следующая команда выведет список всех файлов размером более 10 МБ (не следует путать с 10 МБ):
find / -size +10M -ls
Если вы хотите найти файлы определенного размера, вы можете объединить его с поиском "размер меньше". Следующая команда находит файлы размером от 10 до 12 МБ:
find / -size +10M -size -12M -ls
apt-cache search 'disk usage'
перечислены некоторые программы, доступные для анализа использования диска. Одним из приложений, которое выглядит очень многообещающим, является gt5
.
Из описания упаковки:
Прошли годы, и диски становились все больше и больше, но даже в эту невероятно огромную эпоху жестких дисков пространство, кажется, со временем исчезает. Эта небольшая и эффективная программа обеспечивает более удобный список, чем стандартный du(1). Он отображает то, что произошло с момента последнего запуска, и отображает размер каталога и общий процент. Можно перемещаться и переходить к каталогам с помощью клавиш курсора в текстовом браузере (links, elinks, lynx и т.д.)
В разделе "сопутствующие пакеты" gt5, Я нашел ncdu
. Из описания его упаковки:
Ncdu - это средство просмотра du на основе ncurses. Он обеспечивает быстрый и простой в использовании интерфейс с помощью известной утилиты du. Это позволяет просматривать каталоги и показывать проценты использования диска с помощью библиотеки ncurses.
Мое любимое решение использует сочетание нескольких из этих хороших ответов.
du -aBM 2>/dev/null | sort -nr | head -n 50 | more
du
аргументы:
-
-a
для "всех" файлов и каталогов. Оставьте это только для каталогов -
-BM
для вывода размеров в мегабайтах (M) размеры блоков (B) -
2>/dev/null
- исключить сообщения об ошибках "отказано в разрешении" (спасибо @Oli)
sort
аргументы:
-
-n
для "числового" -
-r
для "обратного хода" (от самого большого к самому маленькому)
head
аргументы:
-
-n 50
только для 50 лучших результатов. - Отстань
more
при использовании меньшего числа
Примечание: Префикс с sudo
чтобы включить каталоги, на доступ к которым у вашей учетной записи нет разрешения.
Пример, показывающий топ-10 самых больших файлов и каталогов в /var (включая общее количество).
cd /varsudo du -aBM 2>/dev/null | sort -nr | head -n 107555M .6794M ./lib5902M ./lib/mysql3987M ./lib/mysql/my_database_dir1825M ./lib/mysql/my_database_dir/a_big_table.ibd997M ./lib/mysql/my_database_dir/another_big_table.ibd657M ./log629M ./log/apache2587M ./log/apache2/ssl_access.log273M ./cache
Я просто использую комбинацию du
и sort
.
sudo du -sx /* 2>/dev/null | sort -n0 /cdrom0 /initrd.img0 /lib640 /proc0 /sys0 /vmlinuz4 /lost+found4 /mnt4 /nonexistent4 /selinux8 /export36 /media56 /scratchbox200 /srv804 /dev4884 /root8052 /bin8600 /tmp9136 /sbin11888 /lib3223100 /etc66480 /boot501072 /web514516 /lib984492 /opt3503984 /var7956192 /usr74235656 /home
Тогда это случай промойте и повторите процедуру. Выберите подкаталоги, которые, по вашему мнению, слишком велики, запустите для них команду и выясните, в чем причина проблемы.
Примечание: Я использую du
'с -x
установите флажок, чтобы все было ограничено одной файловой системой (у меня довольно сложная схема перекрестного монтирования между SSD и RAID5).
Примечание 2: 2>/dev/null
перенаправляет любые сообщения об ошибках в небытие. Если они вас не беспокоят, это не обязательно.
Чтобы отобразить самые большие каталоги из топ-20 (рекурсивно) в текущей папке, используйте следующую однострочную строку:
du -ah . | sort -rh | head -20
или (более ориентированный на Unix):
du -a . | sort -rn | head -20
Для 20 самых больших файлов в текущем каталоге (рекурсивно):
ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20
или с удобочитаемыми размерами:
ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20
Пожалуйста, обратите внимание, что
-h
доступен для GNUsort
только, поэтому, чтобы заставить его работать на OSX / BSD должным образом, вы должны установить его сcoreutils
. Затем добавьте его папку в свойPATH
.
Таким образом, эти псевдонимы полезно иметь в вашем дистанционное управление файлы (каждый раз, когда вам это нужно):
alias big='du -ah . | sort -rh | head -20'alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'
ответ qbi верен, но он будет очень медленным, когда будет много файлов, так как он запустит новый процесс ls для каждого элемента.
гораздо более быстрой версией, использующей find без порождения дочерних процессов, было бы использовать printf для печати размера в байтах (%s) и пути (%p).
find "$directory" -type f -printf "%s - %p\n" | sort -n | tail -n $num_entries
Это кажется идеальным приложением для find
:
find $DIRECTORY -type f -exec ls -s {} \; | sort -n | tail -n 5
Эта команда найдет все файлы в каталоге $DIRECTORY
и выполнить ls -s
на них. Последняя команда выводит выделенный размер файла плюс имя файла. Результат сортируется численно, и отображаются последние пять записей. Таким образом, в результате вы увидите самые большие 5 файлов в $DIRETORY
или любой подкаталог. Если вы войдете tail -n 1
вы увидите только самый большой файл.
Кроме того, вы можете много играть с find
. Например, вы можете искать файлы, которые моложе, чем n дней (-ctime -n
) или которые принадлежат специальным пользователям (-user johndoe
).
Отличный, удобный в использовании инструмент, упомянутый в ответе на аналогичный вопрос является NCurses Disk Usage
инструмент:
sudo ncdu /
Когда мне нужно освободить больше свободного места на серверах, я использую эту команду. Он находит все файлы размером более 50 МБ, а "du -h" делает лучший список файлов, а "sort -n" после pipe делает список численно отсортированным по размеру файла.
find / -size +50M -type f -exec du -h {} \; | sort -n
Попробуйте Baobab, он дает вам графический обзор файлов и папок, вы можете увидеть, где находятся настоящие космические свиньи, и удалить их одним щелчком мыши.https://help.ubuntu.com/community/Baobab
Например, чтобы найти все файлы GB, я бы использовал du и grep, хотя другие методы, упомянутые здесь, также кажутся отличными.
du -h -a /dir | grep "[0-9]G\b"
Вы также можете пофантазировать с помощью опции --except, которая есть у du.
нет, работает в командной строке через ssh.
Подойдет ли что-нибудь графическое?
Что странно, так это то, что у меня есть два сервера, на которых работает одно и то же. Один из них использует диск на 50%, а другой - на 99%. Я не могу найти причину этого.
Так что я в замешательстве, там написано, что 98% используется с du, но когда я запускаю приложение gt5, я получаю: http://grab.by/9Vv2