- Свободное место на разделах Linux и занимаемое папками пространство
- Занимаемое место всеми разделами
- Посмотреть занимаемое место папками
- Вес одной папки и ее содержимого
- Что чаще всего занимает место на диске
- Узнаем размер папки в Linux
- Способы определения размера папки
- Способ 1: Терминал
- Способ 2: Файловый менеджер
- Заключение
- Bash-скриптинг: тест для пустой директории
- 16 ответов 16
Свободное место на разделах Linux и занимаемое папками пространство
Системы на базе UNIX, весьма стабильны, и если они перестают работать корректно, первым делом, необходимо убедиться в наличие свободного дискового пространства. В данной инструкции приведены примеры консольных команд.
Занимаемое место всеми разделами
Базовая команда, которая работает для всех систем семейства UNIX:
* -h добавлено для более читабельного вывода информации по занимаемому месту. Без данной опции информация будет показана в килобайтах.
Примерный результат выполнения команды:
1 — путь к файловому разделу (диск, внешний накопитель, сетевая шара и так далее).
2 — полный объем раздела.
3 — объем использованного пространства.
4 — сколько еще осталось места.
5 — сколько использовано в процентах.
6 — куда примонтирована файловая система.
Посмотреть занимаемое место папками
Чтобы узнать, какой именно каталог занимает много места, воспользуемся командой:
* в данном примере смотрим все папки корневого раздела (/).
Примерный вывод будет следующий:
Это очень удобная команда для поиска каталога, который занимает большую часть пространства раздела.
То же самое с сортировкой по весу папки:
du -d1 / | sort -nr
Вес одной папки и ее содержимого
Отобразить занимаемое место конкретной папки и всего ее содержимого можно следующей командой:
* отобразит занимаемое место каталогом, в котором мы находимся (можно посмотреть командой pwd).
Что чаще всего занимает место на диске
Из данных, которые могут занимать много места, и которые можно чистить, как правило, являются log-файлы — журналы приложений и операционной системы. Это текстовая информация, которая хорошо поддается сжатию. Чтобы автоматизировать процесс чистки логов, воспользуйтесь инструкцией Ротация логов в Linux и FreeBSD с помощью logrotate.
Также место могут занимать временные данные — они находятся в каталоге /tmp.
Источник
Узнаем размер папки в Linux
Зная о системе максимум информации, пользователь сможет легче определять все нюансы в ее работе. Немаловажным является знание сведений о размере папок в Linux, но для начала нужно определиться, каким способом для получения этих данных пользоваться.
Способы определения размера папки
Пользователи операционных систем на базе Linux знают, что большинство действий в них решаются несколькими способами. Так и в случае с определением размера папки. Такая, на первый взгляд, тривиальная задача может ввести в ступор «новичка», но инструкция, которая будет приведена ниже, поможет во всем детально разобраться.
Способ 1: Терминал
Чтобы получить подробнейшую информацию о размере папок в Linux, лучше воспользоваться командой du в «Терминале». Хотя данный способ может отпугнуть неопытного пользователя, который только перешел на Linux, он отлично подойдет для выяснения нужной информации.
Синтаксис
Вся структура утилиты du выглядит следующим образом:
du
du название_папки
du [опция] название_папки
Как видно, синтаксис у нее может строиться по-разному. Например, при выполнении команды du (без указания папки и опции) вы получите стену текста с перечислением размеров всех папок в текущей директории, что крайне неудобно для восприятия.
Лучше использовать опции, если вы хотите получить структурированные данные, подробнее о чем будет рассказано ниже.
Опции
Перед демонстрацией наглядных примеров команды du стоит перечислить ее опции, чтобы использовать все возможности при сборе информации о размере папок.
- -а — вывести на экран сведения о суммарном размере файлов, помещенных в каталог (в конце списка указывается суммарный объем всех файлов в папке).
- —apparent-size — показать достоверный объем помещенных внутрь каталогов файлов. Параметры некоторых файлов в папке иногда бывают недействительными, на это влияет множество факторов, так что использование этой опции помогает удостовериться в корректности данных.
- -B, —block-size=РАЗМЕР — перевести полученные результаты в килобайты (K), мегабайты (M), гигабайты (G), терабайты (T). Например, команда с опцией -BM выведет размер папок в мегабайтах. Обратите внимание, что при использовании различных величин их значение имеет погрешность, ввиду округления до меньшего целого числа.
- -b — отображать данные в байтах (равнозначно —apparent-size и —block-size=1).
- -с — показывать общий итог подсчета размера папки.
- -D — приказ проследовать лишь по тем ссылкам, которые указаны в консоли.
- —files0-from=ФАЙЛ — показать отчет по использованию диска, чье имя будет введено вами в графу «ФАЙЛ».
- -H — равнозначен ключу -D.
- -h — перевести все значения в понятный для человека формат, используя соответствующие единицы измерения данных (килобайты, мегабайты, гигабайты и терабайты).
- —si — практически равносильна прошлой опции, за исключением того, что использует делитель, равный одной тысяче.
- -k — отображать данные в килобайтах (то же самое, что и команда —block-size=1000).
- -l — приказ приплюсовывать все данные в том случае, когда есть боле одной сноски на один и тот же объект.
- -m — отображать данные в мегабайтах (аналогично команде —block-size-1000000).
- -L — строго следовать указанным символьным ссылкам.
- -P — аннулирует предыдущую опцию.
- -0 — каждую выводимую строчку информации заканчивать нулевым байтом, а не начинать новую строку.
- -S — при подсчете занятого пространства не учитывать размер самих папок.
- -s — показывать размер лишь той папки, которую вы указали в качестве аргумента.
- -x — не выходить за пределы указанной файловой системы.
- —exclude=ОБРАЗЕЦ — игнорировать все файлы, совпадающие с «Образцом».
- -d — задать глубину следования папкам.
- —time — показать сведения о последних изменениях в файлах.
- —version — уточнить версию утилиты du.
Теперь, зная все опции команды du, вы сможете самостоятельно применять их на практике, осуществляя гибкую настройку сбора информации.
Примеры использования
Напоследок, чтобы закрепить полученную информацию, стоит рассмотреть несколько примеров использования команды du.
Без ввода дополнительных опций утилита будет автоматически выводить имена и размер папок, расположенных по указанному пути, попутно выводя также и подпапки.
Для вывода данных об интересующей вас папке введите ее имя в контекст команды. К примеру:
du /home/user/Загрузки
du /home/user/Изображения
Чтобы было проще воспринимать всю выводимую информацию, воспользуйтесь опцией -h. Она подстроит размер всех папок под общепринятые единицы измерения цифровых данных.
du -h /home/user/Загрузки
du -h /home/user/Изображения
Для полного отчета об объеме, занимаемом определенной папкой, укажите вместе с командой du опцию -s, а после — имя интересующей вас папки.
du -s /home/user/Загрузки
du -s /home/user/Изображения
Но удобнее будет задействовать опции -h и -s вместе.
du -hs /home/user/Загрузки
du -hs /home/user/Изображения
Опция -с применяется для вывода общей суммы, занимаемого папками места (ее можно применить вместе с опциями -h и -s).
du -chs /home/user/Загрузки
du -chs /home/user/Изображения
Еще одна крайне полезная «фишка», о которой не было сказано выше, — это опция —-max-depth. С помощью нее вы сможете задать глубину, с которой утилита du будет следовать папкам. Например, при указанном коэффициенте глубины в одну единицу, будут просмотрены данные о размере всех без исключения папок, указанных в данном отрезке, а папки в них будут проигнорированы.
Выше были приведены самые популярные применения утилиты du. Используя их, вы сможете добиться желаемого результата — узнать размер папки. Если же опций, используемых в примерах, вам покажется мало, то можете самостоятельно разобраться с остальными, применяя их на практике.
Способ 2: Файловый менеджер
Безусловно, «Терминал» способен предоставить просто кладезь информации о размере папок, но рядовому пользователю будет сложно в нем разобраться. Куда привычней наблюдать графический интерфейс, нежели набор символов на темном фоне. В этом случае, если нужно узнать лишь размер одной папки, лучшим вариантом будет воспользоваться файловым менеджером, который установлен в Linux по умолчанию.
Примечание: в статье будет использован файловый менеджер Nautilus, который является стандартным для Ubuntu, однако инструкция будет применима и к другим менеджерам, отличаться может лишь расположение некоторых элементов интерфейса и их отображение.
Чтобы узнать размер папки в Linux с помощью файлового менеджера, выполните следующие действия:
- Откройте менеджер файлов, нажав по иконке на панели задач или проведя поиск по системе.
После проделанных манипуляций перед вами появится окно, в котором нужно отыскать строку «Содержание» (1), напротив нее и будет указан размер папки. Кстати, чуть ниже будет находиться информация об оставшемся свободном месте на диске (2).
Заключение
По итогу вы имеете два способа, с помощью которых можно узнать размер папки в операционных системах на базе Linux. Хоть они и предоставляют одну и туже информацию, варианты ее получения кардинально отличаются. Если вам надо быстро узнать размер одной папки, то идеальным решением будет использование файлового менеджера, а если вам нужно получить как можно больше информации, то отлично подойдет «Терминал» с утилитой du и ее опциями.
Помимо этой статьи, на сайте еще 12315 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Источник
Bash-скриптинг: тест для пустой директории
Я хочу проверить, не содержит ли каталог никаких файлов. Если так, я пропущу некоторую обработку.
Я попробовал следующее:
Это дает следующую ошибку:
Есть ли решение / альтернатива?
16 ответов 16
Также было бы здорово проверить, существует ли каталог раньше.
Нет необходимости считать что-либо или ракушки. Вы также можете использовать read в сочетании с find . Если вывод find пуст, вы вернете false :
Это должно быть портативным.
Это сделает работу в текущем рабочем каталоге (.):
или та же команда разделена на три строки, чтобы быть более читабельной:
Просто замените ls -1A . | wc -l с ls -1A | wc -l если вам нужно запустить его в другой целевой папке.
Редактировать: я заменил -1a -1A (см. Комментарий @Daniel)
Таким образом, вы не зависите от формата вывода ls . -mindepth пропускает сам каталог, -maxdepth предотвращает рекурсивную защиту в подкаталогах для ускорения работы.
Хакерский, но бездарный, без PID способ:
Это использует тот факт, что встроенная команда test завершается с 2, если задано более одного аргумента после -e : во-первых, глобус «$1″/* расширяется с помощью bash. Это приводит к одному аргументу на файл. Так
Если файлов нет, звездочка в test -e «$1″* не раскрывается, поэтому Shell возвращается к файлу с именем * , который возвращает 1.
. за исключением случаев, когда на самом деле есть один файл с именем точно * , тогда звездочка расширяется до нуля, звездочка, которая заканчивается тем же вызовом, что и выше, т.е. test -e «dir/*» , только на этот раз возвращает 0. (Спасибо @TrueY за указание на это.)
Если есть один файл, запускается test -e «dir/file» , который возвращает 0.
Но если файлов больше, чем 1, запускается test -e «dir/file1» «dir/file2» , который bash сообщает об этом как об ошибке использования, то есть 2.
case оборачивает всю логику так, что только первый случай с 1 состоянием выхода сообщается как успешный.
Возможные проблемы, которые я не проверял:
Есть больше файлов, чем количество разрешенных аргументов — я думаю, это может вести себя подобно случаю с 2+ файлами.
Или на самом деле есть файл с пустым именем — я не уверен, что это возможно на любой вменяемой OS/FS.
С FIND(1) (под Linux и FreeBSD) вы можете нерекурсивно просматривать запись каталога с помощью «-maxdepth 0» и проверять, является ли она пустой с помощью «-empty». Применительно к вопросу это дает:
РЕДАКТИРОВАТЬ: Я думаю, что это решение отлично работает с GNU Find, после быстрого взгляда на реализацию. Но это может не работать, например, с поиском netbsd. Действительно, он использует поле st_size stat(2). Руководство описывает это как:
Лучшее решение, также более простое:
Кроме того, -прень в 1-м решении бесполезна.
РЕДАКТИРОВАТЬ: нет-выход для gnu find .. вышеприведенное решение хорошо для поиска в NetBSD. Для GNU find это должно работать:
Я думаю, что лучшее решение:
Это анонимное редактирование моего ответа, которое может кому-то пригодиться или не пригодиться. Небольшое изменение дает количество файлов:
Это будет работать правильно, даже если имена файлов содержат пробелы.
Как насчет тестирования, если каталог существует и не пуст в одном операторе if?
Это все здорово — просто превратил его в скрипт, чтобы я мог проверять наличие пустых каталогов ниже текущего. Нижеследующее должно быть помещено в файл с именем ‘findempty’, где-то помещен в путь, чтобы bash мог найти его и затем запустить chmod 755. Я думаю, можно легко изменить ваши специфические потребности.
Это работает для меня, чтобы проверить и обработать файлы в каталоге ../IN , учитывая, что скрипт находится в ../Script directory:
Для любого каталога, кроме текущего, вы можете проверить, является ли он пустым, попытавшись выполнить rmdir , потому что rmdir гарантированно завершится с ошибкой для непустых каталогов. Если rmdir успешно, и вы действительно хотели, чтобы пустой каталог выдержал тест, просто mkdir еще раз.
Не используйте этот хак, если есть другие процессы, которые могут стать некомпетентными из-за каталога, который, как они знают, ненадолго прекратит свое существование.
Если rmdir не будет работать для вас, и вы можете тестировать каталоги, которые могут содержать большое количество файлов, любое решение, основанное на глобализации оболочки, может работать медленно и / или работать с ограничениями длины командной строки. Вероятно, лучше использовать find в этом случае. Самое быстрое решение для find я могу придумать, идет как
Это работает для GNU и BSD версий find но не для Solaris, в которой отсутствуют все эти операторы find . Люблю свою работу, Оракул.
Источник