Больше места на диске: как я могу найти, что занимает пространство?

Я обычно настраивал туннель IPv6 (от sixxs.net или he.net), если у них еще нет IPv6, а затем таким образом компьютер имеет статический адрес, и мне не нужно возиться с NAT. Я также хотел бы настроить проверку подлинности на основе ключей (тогда они не должны сообщать вам свой пароль).

У Sixxs есть собственный клиент, который вы используете. Он работает практически для любого NAT и автоматически обновляется при изменении IPv4-адреса. У них есть инструкции по настройке и он упакован для Ubuntu.

Hurricane Electric использует туннель, в который пакеты IPv6 отправляются как полезная нагрузка пакета IPv4. В отличие от Sixxs, TCP / UDP не используется. Это означает, что NAT, за которым вы находитесь, должен поддерживать пересылку PROTOCOL 41 (не порт), и только один компьютер за NAT может его использовать. Программное обеспечение для использования такого туннеля встроено в Ubuntu.

Для HE я использую что-то подобное в /etc/network/interfaces:

auto he-ipv6
iface he-ipv6 inet6 v4tunnel
     endpoint 216.218.226.238
     address  2001:470:a29f::2
     netmask  64
     ttl 64
     up ip -6 route add default dev he-ipv6
     down ip -6 route del default dev he-ipv6

Другое дело, что вам нужно сделать обновляет конечную точку вашего туннеля. Поскольку вы не знаете, когда меняется внешний IP-адрес, вам нужно просто попытаться обновить конечную точку каждые несколько минут. Вы можете использовать что-то вроде этого и запускать его из cron:

#!/bin/sh
echo -n "Hurricane Electric Proto-41 tunnel endpoint update: "
#(C) 2010 Erik B. Andersen This script is licensed under the latest version of the
# AGPL published by the Free Software Foundation at http://www.gnu.org/licenses/ .
####Set these for each different site#########
pass="passwordhere"
user_id="a765b8e2f474667dcb56e08c5f1aa05b"
tunnel_id="97817"
####Past here doesn't need to be changed######
wget -4 "https://ipv4.tunnelbroker.net/ipv4_end.php?ipv4b=AUTO&pass=$(echo -n "${pass}" | md5sum | grep -o -E "[0-9a-fA-F]{32}")&user_id=${user_id}&tunnel_id=${tunnel_id}" -O /dev/null -o /dev/null --no-check-certificate
echo " Done"
54
задан 5 May 2017 в 17:02

47 ответов

Как всегда в Linux, есть более чем один способ выполнить работу. Однако, если вам нужно сделать это из CLI, это мой предпочтительный метод:

Я запускаю его как root или sudo:

du -cha --max-depth=1 / | grep -E "M|G"

Grep должен ограничивать возвращающие строки к тем, которые возвращаются со значениями в диапазоне мегабайт или гигабайт. Если ваши диски достаточно большие, вы можете добавить |T, чтобы включить количество терабайт. Вы можете получить некоторые ошибки на /proc, /sys и / или /dev, так как они не являются реальными файлами на диске. Тем не менее, он должен по-прежнему предоставлять действительный вывод для остальных каталогов в корне. После того, как вы найдете самые большие, вы можете запустить команду внутри этого каталога, чтобы сузить свой путь до преступника. Например, если /var был самым большим, вы могли бы сделать это следующим образом:

du -cha --max-depth=1 /var | grep -E "M|G"

Это должно привести к проблемам детей!

Дополнительные соображения [!d4 ]

Хотя приведенная выше команда, безусловно, сделает трюк, у меня была некоторая конструктивная критика в комментариях ниже, в которой были указаны некоторые вещи, которые вы также могли бы включить.

Предоставленный мной grep может привести к случайное значение «K» возвращается, если имя каталога или файла имеет значение G или M. Если вы абсолютно не хотите, чтобы какой-либо из отображаемых каталогов K отображался, вы хотите, чтобы ваша регулярная игра была более креативной и сложный. например grep -E "^[0-9\.]*[MG]" Если вы знаете, какой диск является проблемой, и на нем есть другие смонтированные диски, которые вы не хотите тратить время, в том числе на поиск, вы можете добавить флаг -x в свою команду du. Описание страницы этого флага:
  -x, --one-file-system
      skip directories on different file systems
Вы можете отсортировать вывод команды du, чтобы верхнее значение было внизу. Просто добавьте это в конец команды: | sort -h
45
ответ дан 22 May 2018 в 22:56
  • 1
    Это именно то, что я делаю. – Lightness Races in Orbit 5 May 2017 в 01:58
  • 2
    Ваш grep возвращает любые папки с буквами M или G в своих именах, рекламное регулярное выражение должно ударять номера с необязательной точкой + M | G, возможно "^[0-9]*[.]*[0-9]*[MG]" – Xen2050 5 May 2017 в 09:24
  • 3
    Если вы знаете, что это один из дисков, это проблема, вы можете использовать опцию -x, чтобы du оставался на этом диске (предоставляется в командной строке). Вы также можете пропустить канал через sort -h, чтобы правильно отсортировать значения для мегабайта / гигабайта для чтения человеком. Обычно я оставлял опцию --max-depth и просто искал весь диск таким образом, сортируя соответствующим образом, чтобы получить самые большие вещи внизу. – Muzer 5 May 2017 в 15:58
  • 4
    @Muzer, зачем возиться с -x? для этого? Просто укажите точку монтирования диска как аргумент du. – alexis 5 May 2017 в 16:20
  • 5
    @alexis. Мой опыт в том, что я иногда оказываюсь в другом мусоре, смонтированном ниже точки монтирования, в которой меня интересует (особенно, если это /), а использование -x дает мне гарантию, что я не буду разбирать вещи. Если ваш / заполнен, и у вас есть отдельно установленный /home или что-то еще, использование -x в значительной степени является необходимостью избавиться от неуместных вещей. Поэтому я считаю, что просто использовать его все время, на всякий случай. – Muzer 5 May 2017 в 16:22

Как всегда в Linux, есть более чем один способ выполнить работу. Однако, если вам нужно сделать это из CLI, это мой предпочтительный метод:

Я запускаю его как root или sudo:

du -cha --max-depth=1 / | grep -E "M|G"

Grep должен ограничивать возвращающие строки к тем, которые возвращаются со значениями в диапазоне мегабайт или гигабайт. Если ваши диски достаточно большие, вы можете добавить |T, чтобы включить количество терабайт. Вы можете получить некоторые ошибки на /proc, /sys и / или /dev, так как они не являются реальными файлами на диске. Тем не менее, он должен по-прежнему предоставлять действительный вывод для остальных каталогов в корне. После того, как вы найдете самые большие, вы можете запустить команду внутри этого каталога, чтобы сузить свой путь до преступника. Например, если /var был самым большим, вы могли бы сделать это следующим образом:

du -cha --max-depth=1 /var | grep -E "M|G"

Это должно привести к проблемам детей!

Дополнительные соображения

Хотя приведенная выше команда, безусловно, сделает трюк, у меня была некоторая конструктивная критика в комментариях ниже, в которой были указаны некоторые вещи, которые вы также могли бы включить.

Предоставленный мной grep может привести к случайное значение «K» возвращается, если имя каталога или файла имеет значение G или M. Если вы абсолютно не хотите, чтобы какой-либо из отображаемых каталогов K отображался, вы хотите, чтобы ваша регулярная игра была более креативной и сложный. например grep -E "^[0-9\.]*[MG]" Если вы знаете, какой диск является проблемой, и на нем есть другие смонтированные диски, которые вы не хотите тратить время, в том числе на поиск, вы можете добавить флаг -x в свою команду du. Описание страницы этого флага: -x, --one-file-system skip directories on different file systems Вы можете отсортировать вывод команды du, чтобы верхнее значение было внизу. Просто добавьте это в конец команды: | sort -h
52
ответ дан 18 July 2018 в 13:49

Как всегда в Linux, есть более чем один способ выполнить работу. Однако, если вам нужно сделать это из CLI, это мой предпочтительный метод:

Я запускаю его как root или sudo:

du -cha --max-depth=1 / | grep -E "M|G"

Grep должен ограничивать возвращающие строки к тем, которые возвращаются со значениями в диапазоне мегабайт или гигабайт. Если ваши диски достаточно большие, вы можете добавить |T, чтобы включить количество терабайт. Вы можете получить некоторые ошибки на /proc, /sys и / или /dev, так как они не являются реальными файлами на диске. Тем не менее, он должен по-прежнему предоставлять действительный вывод для остальных каталогов в корне. После того, как вы найдете самые большие, вы можете запустить команду внутри этого каталога, чтобы сузить свой путь до преступника. Например, если /var был самым большим, вы могли бы сделать это следующим образом:

du -cha --max-depth=1 /var | grep -E "M|G"

Это должно привести к проблемам детей!

Дополнительные соображения

Хотя приведенная выше команда, безусловно, сделает трюк, у меня была некоторая конструктивная критика в комментариях ниже, в которой были указаны некоторые вещи, которые вы также могли бы включить.

Предоставленный мной grep может привести к случайное значение «K» возвращается, если имя каталога или файла имеет значение G или M. Если вы абсолютно не хотите, чтобы какой-либо из отображаемых каталогов K отображался, вы хотите, чтобы ваша регулярная игра была более креативной и сложный. например grep -E "^[0-9\.]*[MG]" Если вы знаете, какой диск является проблемой, и на нем есть другие смонтированные диски, которые вы не хотите тратить время, в том числе на поиск, вы можете добавить флаг -x в свою команду du. Описание страницы этого флага: -x, --one-file-system skip directories on different file systems Вы можете отсортировать вывод команды du, чтобы верхнее значение было внизу. Просто добавьте это в конец команды: | sort -h
53
ответ дан 24 July 2018 в 20:16

Как всегда в Linux, есть более чем один способ выполнить работу. Однако, если вам нужно сделать это из CLI, это мой предпочтительный метод:

Я запускаю его как root или sudo:

du -cha --max-depth=1 / | grep -E "M|G"

Grep должен ограничивать возвращающие строки к тем, которые возвращаются со значениями в диапазоне мегабайт или гигабайт. Если ваши диски достаточно большие, вы можете добавить |T, чтобы включить количество терабайт. Вы можете получить некоторые ошибки на /proc, /sys и / или /dev, так как они не являются реальными файлами на диске. Тем не менее, он должен по-прежнему предоставлять действительный вывод для остальных каталогов в корне. После того, как вы найдете самые большие, вы можете запустить команду внутри этого каталога, чтобы сузить свой путь до преступника. Например, если /var был самым большим, вы могли бы сделать это следующим образом:

du -cha --max-depth=1 /var | grep -E "M|G"

Это должно привести к проблемам детей!

Дополнительные соображения

Хотя приведенная выше команда, безусловно, сделает трюк, у меня была некоторая конструктивная критика в комментариях ниже, в которой были указаны некоторые вещи, которые вы также могли бы включить.

Предоставленный мной grep может привести к случайное значение «K» возвращается, если имя каталога или файла имеет значение G или M. Если вы абсолютно не хотите, чтобы какой-либо из отображаемых каталогов K отображался, вы хотите, чтобы ваша регулярная игра была более креативной и сложный. например grep -E "^[0-9\.]*[MG]" Если вы знаете, какой диск является проблемой, и на нем есть другие смонтированные диски, которые вы не хотите тратить время, в том числе на поиск, вы можете добавить флаг -x в свою команду du. Описание страницы этого флага: -x, --one-file-system skip directories on different file systems Вы можете отсортировать вывод команды du, чтобы верхнее значение было внизу. Просто добавьте это в конец команды: | sort -h
53
ответ дан 31 July 2018 в 10:29

Как всегда в Linux, есть более чем один способ выполнить работу. Однако, если вам нужно сделать это из CLI, это мой предпочтительный метод:

Я запускаю его как root или sudo:

du -cha --max-depth=1 / | grep -E "M|G"

Grep должен ограничивать возвращающие строки к тем, которые возвращаются со значениями в диапазоне мегабайт или гигабайт. Если ваши диски достаточно большие, вы можете добавить |T, чтобы включить количество терабайт. Вы можете получить некоторые ошибки на /proc, /sys и / или /dev, так как они не являются реальными файлами на диске. Тем не менее, он должен по-прежнему предоставлять действительный вывод для остальных каталогов в корне. После того, как вы найдете самые большие, вы можете запустить команду внутри этого каталога, чтобы сузить свой путь до преступника. Например, если /var был самым большим, вы могли бы сделать это следующим образом:

du -cha --max-depth=1 /var | grep -E "M|G"

Это должно привести к проблемам детей!

Дополнительные соображения

Хотя приведенная выше команда, безусловно, сделает трюк, у меня была некоторая конструктивная критика в комментариях ниже, в которой были указаны некоторые вещи, которые вы также могли бы включить.

Предоставленный мной grep может привести к случайное значение «K» возвращается, если имя каталога или файла имеет значение G или M. Если вы абсолютно не хотите, чтобы какой-либо из отображаемых каталогов K отображался, вы хотите, чтобы ваша регулярная игра была более креативной и сложный. например grep -E "^[0-9\.]*[MG]" Если вы знаете, какой диск является проблемой, и на нем есть другие смонтированные диски, которые вы не хотите тратить время, в том числе на поиск, вы можете добавить флаг -x в свою команду du. Описание страницы этого флага: -x, --one-file-system skip directories on different file systems Вы можете отсортировать вывод команды du, чтобы верхнее значение было внизу. Просто добавьте это в конец команды: | sort -h
53
ответ дан 31 July 2018 в 11:30

Вы можете использовать ncdu для этого. Он работает очень хорошо.

sudo apt install ncdu

44
ответ дан 22 May 2018 в 22:56
  • 1
    Я пинаю себя, как я обычно использую эту программу, но так как нет свободного места, я не могу установить его ха-ха – Karl Morrison 4 May 2017 в 18:29
  • 2
    @KarlMorrison Я вижу несколько возможных решений, просто смонтируйте их поверх sshfs на другом компьютере и запустите ncdu (если у вас уже есть ssh-сервер на нем ..) - или если у вас нет ssh-сервера на нем, вы можете сделать наоборот, установите ncdu на другой сервер и смонтируйте его с помощью sshfs и запустите ncdu с монтирования (если у вас уже есть sshfs на сервере) - или если у вас их нет, ... если ncdu - это один скрипт, вы может просто curl http://path/to/ncdu | sh, и он будет работать в кэше ввода-вывода IO-памяти, но это потребует некоторой удачи. вероятно, есть способ сделать ram-диск тоже – hanshenrik 4 May 2017 в 23:09
  • 3
    @KarlMorrison или вы можете загрузить образ Live Linux и установить его там. – Mark Yisri 10 May 2017 в 13:31

Я использую эту команду

sudo du -aBM -d 1 . | sort -nr | head -20

Иногда мне нужно запустить ее из каталога /, поскольку я поместил что-то в нечетное место. [ ! d2]

15
ответ дан 22 May 2018 в 22:56
  • 1
    Дает вам +1 за то, что он работает! Однако решение TopHats действительно быстрее читает мой диск! – Karl Morrison 4 May 2017 в 18:47
  • 2
    Я часто считаю это более полезным для этого без переключателя -d 1 (и обычно с less вместо head -20), так что я получаю полный рекурсивно перечислимый список всех файлов и каталогов, отсортированных по пространству, которое они потребляют. Таким образом, если я вижу, что каталог занимает много места, я могу просто прокрутить вниз, чтобы увидеть, действительно ли большая часть пространства занята каким-то конкретным файлом или подкаталогом. Это хороший способ найти ненужные файлы и каталоги для удаления, чтобы освободить место: просто прокрутите вниз, пока не увидите что-то, что вы уверены, что не хотите его хранить, удалять и повторять. – Ilmari Karonen 5 May 2017 в 22:16
  • 3
    @KarlMorrison он не читает это быстрее, просто sort ждет завершения вывода до начала вывода. – muru 29 May 2017 в 08:34
  • 4
    @muru А ладно. Однако я быстрее получаю информацию, чтобы начать быстрее, если это лучший термин! – Karl Morrison 29 May 2017 в 11:19

Уже есть много хороших ответов о том, как найти каталоги, занимающие большую часть пространства. Если у вас есть основания полагать, что основная проблема состоит из нескольких больших файлов, а не для многих небольших, вы можете использовать что-то вроде find / -size +10M.

10
ответ дан 22 May 2018 в 22:56

Я не знаю Ubuntu и не могу проверить свой ответ, но после этого напишу здесь свой ответ, основанный на моем опыте как администратор unix давно.

Узнайте, какая файловая система заканчивается в пространстве
df -h
будут перечислены все файловые системы, их размер и их свободное пространство. Вы просто теряете время, если исследуете файловые системы, у которых достаточно места. Предположим, что полная файловая система - это / myfilesystem. проверьте выход df, если есть файловые системы, установленные на поддиректорах / myfilesystems. Если это так, следующие изменения должны быть адаптированы к этой ситуации. Узнайте, сколько мест используется файлами этой файловой системы
du -sh /myfilesystem
. Параметр -x может использоваться, чтобы гарантировать, что учитываются только файлы, входящие в эту файловую систему. Некоторые Unix-варианты (например, Solaris) не знают опции -x для du. Затем вы должны использовать некоторые обходные пути, чтобы найти дю файловой системы. Теперь проверьте, является ли дю видимых файлов примерно размером используемого пространства, отображаемого df. Если это так, вы можете начать поиск больших файлов / каталогов файловой системы / myfilesystem для очистки. для поиска самых больших подкаталогов каталога /.../dir используйте
du -sk /.../dir/*|sort -n
параметр -k заставляет выводить sie в килобайте без какой-либо единицы. Это может быть значение по умолчанию для некоторых систем. Тогда вы можете опустить эту опцию. Самые большие файлы / подкаталоги будут показаны внизу вывода. Если вы нашли большой файл / каталог, который вам больше не нужен, вы можете удалить его соответствующим образом. Не беспокойтесь о небольших каталогах в верхней части вывода. Он не решит вашу проблему, если вы их удалите. Если у вас все еще недостаточно места, вы можете повторить шаг 4 в больших подкаталогах, которые отображаются в нижней части списка.

Но что произошло, если выход du не является приблизительно доступным пространством, отображаемым df?

Если выход du больше, вы пропустили подкаталог, в котором монтируется другая файловая система. Если выход du намного меньше, то som-файлы не отображаются ни в одной директории, которую проверяет. Для его явлений могут быть разные причины.

Узнайте, в какой файловой системе пробегает пробел. [F1] отобразит всю файловую систему, ее размер и свободное пространство. Вы просто теряете время, если исследуете файловые системы, у которых достаточно места. Предположим, что полная файловая система - это / myfilesystem. проверьте выход df, если есть файловые системы, установленные на поддиректорах / myfilesystems. Если это так, следующие изменения должны быть адаптированы к этой ситуации.

Узнайте, какая файловая система закончила пространство

du -shx /myfilesystem 
сообщит значение, которое не содержит размер / myfilesystem / subdir / большой_файл. Единственный способ узнать, существуют ли такие файлы, это размонтировать / myfilesystem / subir и проверить с помощью
ls -la /myfilesystem/subdir 

список всех файловых систем, их размер и их свободное пространство. Вы просто теряете время, если исследуете файловые системы, у которых достаточно места. Предположим, что полная файловая система - это / myfilesystem. проверьте выход df, если есть файловые системы, установленные на поддиректорах / myfilesystems. Если это так, следующие изменения должны быть адаптированы к этой ситуации.

Узнайте, сколько пространства используется файлами этой файловой системы
du -sh /myfilesystem
. Параметр -x может использоваться, чтобы гарантировать, что только файлы, являются членами этой файловой системы. Некоторые Unix-варианты (например, Solaris) не знают опции -x для du. Затем вы должны использовать некоторые обходные пути, чтобы найти дю файловой системы.

есть файлы в каталогах, которые больше не видны, потому что в одном из своих родительских каталогов монтируется другая файловая система. Поэтому, если у вас есть файл / myfilesysem / subdir / bigfile и теперь монтируйте другую файловую систему в / myfilesystem / subdir, вы больше не видите этот файл и

9
ответ дан 22 May 2018 в 22:56
  • 1
    На занятом сервере вы не можете всегда отключать все. Но вы можете привязать верхний каталог к ​​временному местоположению, и он не будет включать в себя другие монтирования и разрешит доступ к скрытым файлам. – Zan Lynx 7 May 2017 в 21:25
  • 2
    Перед systemd у меня часто возникали сбои монтирования, что приводило к заполнению / монтированием мусора. Запись резервной копии в / mnt / backup без подключенного USB-накопителя. Теперь я убеждаюсь, что эти единицы задания имеют требования к монтированию. – Zan Lynx 7 May 2017 в 21:30
  • 3
    @ZanLynx Спасибо, я никогда не слышал о bind mounts до – miracle173 8 May 2017 в 14:01
  • 4
    @ZanLynx: Не только на занятых серверах. Представьте, что вы /tmp в отдельной файловой системе (например, tmpfs) и что-то создали файлы в /tmp, прежде чем она стала точкой монтирования в другую файловую систему. Теперь эти файлы находятся в корневой файловой системе, затененных точкой монтирования, и вы не можете получить к ним доступ без перезагрузки в режим восстановления (который не обрабатывает /etc/fstab) или, как вы предлагаете, привязки. – David Foerster 3 June 2017 в 19:58

Если вы также заинтересованы в том, чтобы не использовать команду, вот приложение: Filelight

Позволяет быстро визуализировать, что использует дисковое пространство в любой папке.

Filelight

6
ответ дан 22 May 2018 в 22:56
  • 1
    Это сервер I SSH, без GUI. – Karl Morrison 6 May 2017 в 12:10
  • 2
    @KarlMorrison Я думаю, что есть способы запуска GUI-программ по ssh, но это идея позже, когда у вас есть место для установки пакетов – Xen2050 7 May 2017 в 02:54
  • 3
    @ Давид. О да, я пытаюсь уйти от этого. Это было необходимо на другой платформе, которую я использовал. Я исправлю этот комментарий. – Mark Yisri 5 June 2017 в 14:29
  • 4
    @Karl да, легко, если X уже установлен на клиенте: ssh -X <your host>, а затем запустите вашу программу из командной строки – Mark Yisri 5 June 2017 в 14:30
  • 5
    @MarkYisri - это то, что вам нужно установить программу и ее зависимости. И в случае с Filelight требуется, по крайней мере, KDElibs и Qt, которые не очень малы. См. эта страница для пакета файлов Ubuntu filelight , обратите внимание на то, сколько у него зависимостей. – Ruslan 4 July 2017 в 18:10

Попробуйте sudo apt-get autoremove удалить неиспользуемые файлы, если вы этого еще не сделали

4
ответ дан 22 May 2018 в 22:56
  • 1
    Уже делал это раньше :( Но хорошая идея для других! – Karl Morrison 6 May 2017 в 12:10

Я часто использую этот

du -sh /*/

Тогда, если я найду несколько больших папок, я переключусь на него и продолжу расследование

cd big_dir
du -sh */

При необходимости вы также можете автоматически сортировать его с помощью

du -s /*/ | sort -n
3
ответ дан 22 May 2018 в 22:56

На самом деле не ответ, но добавление.

Вам тяжело не хватает места и не удается установить ncdu из ответа @erman.

Некоторые предложения

sudo apt clean all для удаления пакетов, которые вы уже загрузили. SAFE sudo rm -f /var/log/*gz файлы журнала очистки более чем через неделю или две - не будут удалять более новые / текущие журналы. MOSTLY SAFE sudo lsof | grep deleted перечисляет все открытые файлы, но фильтрует их до тех, которые были удалены с диска. FAIRLY SAFE sudo rm /tmp/* удаляет некоторые временные файлы - если что-то их использует, вы можете нарушить процесс. НЕ ДЕЙСТВИТЕЛЬНО, ЧТО БЕЗОПАСНО

Чтобы `lsof можно было бы возвращать такие строки:

server456 ~ $ lsof | grep deleted
init          1          root    9r      REG              253,0  10406312       3104 /var/lib/sss/mc/initgro                        ups (deleted)
salt-mini  4532          root    0r      REG              253,0        17     393614 /tmp/sh-thd-1492991421                         (deleted)

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

Другие общие подозреваемые здесь включают в себя syslog / rsyslog / syslog-ng, squid, apache , или любой процесс, выполняемый вашим сервером, который является «тяжелым».

2
ответ дан 22 May 2018 в 22:56

Я нахожу особенно ценным вывод таких инструментов, как Filelight, но, как и в вашем случае, на серверах обычно отсутствует GUI, но команда du всегда доступна.

То, что я обычно делаю is:

записать вывод du в файл (du / > du_output.txt); скопируйте файл на мою машину; используйте DuFS для «монтирования» вывода du во временном каталоге; DuFS использует FUSE для создания виртуальной файловой системы (= файлы фактически не созданы, это все подделка) в соответствии с выходом du; запустите Filelight или другой инструмент GUI в этом временном каталоге.

Отказ от ответственности: я написал dufs - именно потому, что мне часто приходится выяснять, какое пространство на болоте на безголовых машинах.

2
ответ дан 22 May 2018 в 22:56
  • 1
    Вы можете просто отсортировать -n du_output.txt – Zan Lynx 7 May 2017 в 21:33
  • 2
    Я нахожу графическое отображение используемого пространства более интуитивным. – Matteo Italia 7 May 2017 в 21:50

Подобно @TopHat, но фильтрует некоторые файлы, если у них есть M, G или T в имени. Я не думаю, что он пропустит размер в первом столбце, но он не будет соответствовать имени файла, если вы не назовете файлы творчески.

du -chad 1 . | grep -E '[0-9]M[[:blank:]]|[0-9]G[[:blank:]]|[0-9]T[[:blank:]]'

Переключатели командной строки объясняются здесь, так как я не знал, что c или a.

-1
ответ дан 22 May 2018 в 22:56

Попробуйте sudo apt-get autoremove удалить неиспользуемые файлы, если вы этого еще не сделали

4
ответ дан 18 July 2018 в 13:49

Вы можете использовать ncdu для этого. Он работает очень хорошо.

sudo apt install ncdu

48
ответ дан 18 July 2018 в 13:49

Если вы также заинтересованы в том, чтобы не использовать команду, вот приложение: Filelight

Позволяет быстро визуализировать, что использует дисковое пространство в любой папке.

Filelight

6
ответ дан 18 July 2018 в 13:49

Уже есть много хороших ответов о том, как найти каталоги, занимающие большую часть пространства. Если у вас есть основания полагать, что основная проблема состоит из нескольких больших файлов, а не для многих небольших, вы можете использовать что-то вроде find / -size +10M.

10
ответ дан 18 July 2018 в 13:49

Я нахожу особенно ценным вывод таких инструментов, как Filelight, но, как и в вашем случае, на серверах обычно отсутствует GUI, но команда du всегда доступна.

То, что я обычно делаю is:

записать вывод du в файл (du / > du_output.txt); скопируйте файл на мою машину; используйте DuFS для «монтирования» вывода du во временном каталоге; DuFS использует FUSE для создания виртуальной файловой системы (= файлы фактически не созданы, это все подделка) в соответствии с выходом du; запустите Filelight или другой инструмент GUI в этом временном каталоге.

Отказ от ответственности: я написал dufs - именно потому, что мне часто приходится выяснять, какое пространство на болоте на безголовых машинах.

2
ответ дан 18 July 2018 в 13:49

Я не знаю Ubuntu и не могу проверить свой ответ, но после этого напишу здесь свой ответ, основанный на моем опыте как администратор unix давно.

Узнайте, какая файловая система заканчивается в пространстве df -h будут перечислены все файловые системы, их размер и их свободное пространство. Вы просто теряете время, если исследуете файловые системы, у которых достаточно места. Предположим, что полная файловая система - это / myfilesystem. проверьте выход df, если есть файловые системы, установленные на поддиректорах / myfilesystems. Если это так, следующие изменения должны быть адаптированы к этой ситуации. Узнайте, сколько мест используется файлами этой файловой системы du -sh /myfilesystem . Параметр -x может использоваться, чтобы гарантировать, что учитываются только файлы, входящие в эту файловую систему. Некоторые Unix-варианты (например, Solaris) не знают опции -x для du. Затем вы должны использовать некоторые обходные пути, чтобы найти дю файловой системы. Теперь проверьте, является ли дю видимых файлов примерно размером используемого пространства, отображаемого df. Если это так, вы можете начать поиск больших файлов / каталогов файловой системы / myfilesystem для очистки. для поиска самых больших подкаталогов каталога /.../dir используйте du -sk /.../dir/*|sort -n параметр -k заставляет выводить sie в килобайте без какой-либо единицы. Это может быть значение по умолчанию для некоторых систем. Тогда вы можете опустить эту опцию. Самые большие файлы / подкаталоги будут показаны внизу вывода. Если вы нашли большой файл / каталог, который вам больше не нужен, вы можете удалить его соответствующим образом. Не беспокойтесь о небольших каталогах в верхней части вывода. Он не решит вашу проблему, если вы их удалите. Если у вас все еще недостаточно места, вы можете повторить шаг 4 в больших подкаталогах, которые отображаются в нижней части списка.

Но что произошло, если выход du не является приблизительно доступным пространством, отображаемым df?

Если выход du больше, вы пропустили подкаталог, в котором монтируется другая файловая система. Если выход du намного меньше, то som-файлы не отображаются ни в одной директории, которую проверяет. Для его явлений могут быть разные причины.

Узнайте, в какой файловой системе пробегает пробел. [F1] отобразит всю файловую систему, ее размер и свободное пространство. Вы просто теряете время, если исследуете файловые системы, у которых достаточно места. Предположим, что полная файловая система - это / myfilesystem. проверьте выход df, если есть файловые системы, установленные на поддиректорах / myfilesystems. Если это так, следующие изменения должны быть адаптированы к этой ситуации.

Узнайте, какая файловая система закончила пространство

du -shx /myfilesystem сообщит значение, которое не содержит размер / myfilesystem / subdir / большой_файл. Единственный способ узнать, существуют ли такие файлы, это размонтировать / myfilesystem / subir и проверить с помощью ls -la /myfilesystem/subdir

список всех файловых систем, их размер и их свободное пространство. Вы просто теряете время, если исследуете файловые системы, у которых достаточно места. Предположим, что полная файловая система - это / myfilesystem. проверьте выход df, если есть файловые системы, установленные на поддиректорах / myfilesystems. Если это так, следующие изменения должны быть адаптированы к этой ситуации.

Узнайте, сколько пространства используется файлами этой файловой системы du -sh /myfilesystem . Параметр -x может использоваться, чтобы гарантировать, что только файлы, являются членами этой файловой системы. Некоторые Unix-варианты (например, Solaris) не знают опции -x для du. Затем вы должны использовать некоторые обходные пути, чтобы найти дю файловой системы.

есть файлы в каталогах, которые больше не видны, потому что в одном из своих родительских каталогов монтируется другая файловая система. Поэтому, если у вас есть файл / myfilesysem / subdir / bigfile и теперь монтируйте другую файловую систему в / myfilesystem / subdir, вы больше не видите этот файл и

9
ответ дан 18 July 2018 в 13:49

На самом деле не ответ, но добавление.

Вам тяжело не хватает места и не удается установить ncdu из ответа @erman.

Некоторые предложения

sudo apt clean all для удаления пакетов, которые вы уже загрузили. SAFE sudo rm -f /var/log/*gz файлы журнала очистки более чем через неделю или две - не будут удалять более новые / текущие журналы. MOSTLY SAFE sudo lsof | grep deleted перечисляет все открытые файлы, но фильтрует их до тех, которые были удалены с диска. FAIRLY SAFE sudo rm /tmp/* удаляет некоторые временные файлы - если что-то их использует, вы можете нарушить процесс. НЕ ДЕЙСТВИТЕЛЬНО, ЧТО БЕЗОПАСНО

Чтобы `lsof можно было бы возвращать такие строки:

server456 ~ $ lsof | grep deleted init 1 root 9r REG 253,0 10406312 3104 /var/lib/sss/mc/initgro ups (deleted) salt-mini 4532 root 0r REG 253,0 17 393614 /tmp/sh-thd-1492991421 (deleted)

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

Другие общие подозреваемые здесь включают в себя syslog / rsyslog / syslog-ng, squid, apache , или любой процесс, выполняемый вашим сервером, который является «тяжелым».

2
ответ дан 18 July 2018 в 13:49

Подобно @TopHat, но фильтрует некоторые файлы, если у них есть M, G или T в имени. Я не думаю, что он пропустит размер в первом столбце, но он не будет соответствовать имени файла, если вы не назовете файлы творчески.

du -chad 1 . | grep -E '[0-9]M[[:blank:]]|[0-9]G[[:blank:]]|[0-9]T[[:blank:]]'

Переключатели командной строки объясняются здесь, так как я не знал, что c или a.

-1
ответ дан 18 July 2018 в 13:49

Попробуйте sudo apt-get autoremove удалить неиспользуемые файлы, если вы этого еще не сделали

4
ответ дан 24 July 2018 в 20:16
  • 1
    Дает вам +1 за то, что он работает! Однако решение TopHats действительно быстрее читает мой диск! – Karl Morrison 4 May 2017 в 18:47
  • 2
    Я часто считаю это более полезным для этого без переключателя -d 1 (и обычно с less вместо head -20), так что я получаю полный рекурсивно перечислимый список всех файлов и каталогов, отсортированных по пространству, которое они потребляют. Таким образом, если я вижу, что каталог занимает много места, я могу просто прокрутить вниз, чтобы увидеть, действительно ли большая часть пространства занята каким-то конкретным файлом или подкаталогом. Это хороший способ найти ненужные файлы и каталоги для удаления, чтобы освободить место: просто прокрутите вниз, пока не увидите что-то, что вы уверены, что не хотите его хранить, удалять и повторять. – Ilmari Karonen 5 May 2017 в 22:16
  • 3
    Уже делал это раньше :( Но хорошая идея для других! – Karl Morrison 6 May 2017 в 12:10
  • 4
    @KarlMorrison он не читает это быстрее, просто sort ждет завершения вывода до начала вывода. – muru 29 May 2017 в 08:34
  • 5
    @muru А ладно. Однако я быстрее получаю информацию, чтобы начать быстрее, если это лучший термин! – Karl Morrison 29 May 2017 в 11:19

Вы можете использовать ncdu для этого. Он работает очень хорошо.

sudo apt install ncdu

48
ответ дан 24 July 2018 в 20:16
  • 1
    Я пинаю себя, как я обычно использую эту программу, но так как нет свободного места, я не могу установить его ха-ха – Karl Morrison 4 May 2017 в 18:29
  • 2
    @KarlMorrison Я вижу несколько возможных решений, просто смонтируйте их поверх sshfs на другом компьютере и запустите ncdu (если у вас уже есть ssh-сервер на нем ..) - или если у вас нет ssh-сервера на нем, вы можете сделать наоборот, установите ncdu на другой сервер и смонтируйте его с помощью sshfs и запустите ncdu с монтирования (если у вас уже есть sshfs на сервере) - или если у вас их нет, ... если ncdu - это один скрипт, вы может просто curl http://path/to/ncdu | sh, и он будет работать в кэше ввода-вывода IO-памяти, но это потребует некоторой удачи. вероятно, есть способ сделать ram-диск тоже – hanshenrik 4 May 2017 в 23:09
  • 3
    @KarlMorrison или вы можете загрузить образ Live Linux и установить его там. – Mark Yisri 10 May 2017 в 13:31

Если вы также заинтересованы в том, чтобы не использовать команду, вот приложение: Filelight

Позволяет быстро визуализировать, что использует дисковое пространство в любой папке.

Filelight

6
ответ дан 24 July 2018 в 20:16
  • 1
    Это сервер I SSH, без GUI. – Karl Morrison 6 May 2017 в 12:10
  • 2
    @KarlMorrison Я думаю, что есть способы запуска GUI-программ по ssh, но это идея позже, когда у вас есть место для установки пакетов – Xen2050 7 May 2017 в 02:54
  • 3
    @ Давид. О да, я пытаюсь уйти от этого. Это было необходимо на другой платформе, которую я использовал. Я исправлю этот комментарий. – Mark Yisri 5 June 2017 в 14:29
  • 4
    @Karl да, легко, если X уже установлен на клиенте: ssh -X <your host>, а затем запустите вашу программу из командной строки – Mark Yisri 5 June 2017 в 14:30
  • 5
    @MarkYisri - это то, что вам нужно установить программу и ее зависимости. И в случае с Filelight требуется, по крайней мере, KDElibs и Qt, которые не очень малы. См. эта страница для пакета файлов Ubuntu filelight , обратите внимание на то, сколько у него зависимостей. – Ruslan 4 July 2017 в 18:10

Уже есть много хороших ответов о том, как найти каталоги, занимающие большую часть пространства. Если у вас есть основания полагать, что основная проблема состоит из нескольких больших файлов, а не для многих небольших, вы можете использовать что-то вроде find / -size +10M.

10
ответ дан 24 July 2018 в 20:16

Я нахожу особенно ценным вывод таких инструментов, как Filelight, но, как и в вашем случае, на серверах обычно отсутствует GUI, но команда du всегда доступна.

То, что я обычно делаю is:

записать вывод du в файл (du / > du_output.txt); скопируйте файл на мою машину; используйте DuFS для «монтирования» вывода du во временном каталоге; DuFS использует FUSE для создания виртуальной файловой системы (= файлы фактически не созданы, это все подделка) в соответствии с выходом du; запустите Filelight или другой инструмент GUI в этом временном каталоге.

Отказ от ответственности: я написал dufs - именно потому, что мне часто приходится выяснять, какое пространство на болоте на безголовых машинах.

2
ответ дан 24 July 2018 в 20:16
  • 1
    Вы можете просто отсортировать -n du_output.txt – Zan Lynx 7 May 2017 в 21:33
  • 2
    Я нахожу графическое отображение используемого пространства более интуитивным. – Matteo Italia 7 May 2017 в 21:50

Я не знаю Ubuntu и не могу проверить свой ответ, но после этого напишу здесь свой ответ, основанный на моем опыте как администратор unix давно.

Узнайте, какая файловая система заканчивается в пространстве df -h будут перечислены все файловые системы, их размер и их свободное пространство. Вы просто теряете время, если исследуете файловые системы, у которых достаточно места. Предположим, что полная файловая система - это / myfilesystem. проверьте выход df, если есть файловые системы, установленные на поддиректорах / myfilesystems. Если это так, следующие изменения должны быть адаптированы к этой ситуации. Узнайте, сколько мест используется файлами этой файловой системы du -sh /myfilesystem . Параметр -x может использоваться, чтобы гарантировать, что учитываются только файлы, входящие в эту файловую систему. Некоторые Unix-варианты (например, Solaris) не знают опции -x для du. Затем вы должны использовать некоторые обходные пути, чтобы найти дю файловой системы. Теперь проверьте, является ли дю видимых файлов примерно размером используемого пространства, отображаемого df. Если это так, вы можете начать поиск больших файлов / каталогов файловой системы / myfilesystem для очистки. для поиска самых больших подкаталогов каталога /.../dir используйте du -sk /.../dir/*|sort -n параметр -k заставляет выводить sie в килобайте без какой-либо единицы. Это может быть значение по умолчанию для некоторых систем. Тогда вы можете опустить эту опцию. Самые большие файлы / подкаталоги будут показаны внизу вывода. Если вы нашли большой файл / каталог, который вам больше не нужен, вы можете удалить его соответствующим образом. Не беспокойтесь о небольших каталогах в верхней части вывода. Он не решит вашу проблему, если вы их удалите. Если у вас все еще недостаточно места, вы можете повторить шаг 4 в больших подкаталогах, которые отображаются в нижней части списка.

Но что произошло, если выход du не является приблизительно доступным пространством, отображаемым df?

Если выход du больше, вы пропустили подкаталог, в котором монтируется другая файловая система. Если выход du намного меньше, то som-файлы не отображаются ни в одной директории, которую проверяет. Для его явлений могут быть разные причины.

Узнайте, в какой файловой системе пробегает пробел. [F1] отобразит всю файловую систему, ее размер и свободное пространство. Вы просто теряете время, если исследуете файловые системы, у которых достаточно места. Предположим, что полная файловая система - это / myfilesystem. проверьте выход df, если есть файловые системы, установленные на поддиректорах / myfilesystems. Если это так, следующие изменения должны быть адаптированы к этой ситуации.

Узнайте, какая файловая система закончила пространство

du -shx /myfilesystem сообщит значение, которое не содержит размер / myfilesystem / subdir / большой_файл. Единственный способ узнать, существуют ли такие файлы, это размонтировать / myfilesystem / subir и проверить с помощью ls -la /myfilesystem/subdir

список всех файловых систем, их размер и их свободное пространство. Вы просто теряете время, если исследуете файловые системы, у которых достаточно места. Предположим, что полная файловая система - это / myfilesystem. проверьте выход df, если есть файловые системы, установленные на поддиректорах / myfilesystems. Если это так, следующие изменения должны быть адаптированы к этой ситуации.

Узнайте, сколько пространства используется файлами этой файловой системы du -sh /myfilesystem . Параметр -x может использоваться, чтобы гарантировать, что только файлы, являются членами этой файловой системы. Некоторые Unix-варианты (например, Solaris) не знают опции -x для du. Затем вы должны использовать некоторые обходные пути, чтобы найти дю файловой системы.

есть файлы в каталогах, которые больше не видны, потому что в одном из своих родительских каталогов монтируется другая файловая система. Поэтому, если у вас есть файл / myfilesysem / subdir / bigfile и теперь монтируйте другую файловую систему в / myfilesystem / subdir, вы больше не видите этот файл и

9
ответ дан 24 July 2018 в 20:16
  • 1
    На занятом сервере вы не можете всегда отключать все. Но вы можете привязать верхний каталог к ​​временному местоположению, и он не будет включать в себя другие монтирования и разрешит доступ к скрытым файлам. – Zan Lynx 7 May 2017 в 21:25
  • 2
    Перед systemd у меня часто возникали сбои монтирования, что приводило к заполнению / монтированием мусора. Запись резервной копии в / mnt / backup без подключенного USB-накопителя. Теперь я убеждаюсь, что эти единицы задания имеют требования к монтированию. – Zan Lynx 7 May 2017 в 21:30
  • 3
    @ZanLynx Спасибо, я никогда не слышал о bind mounts до – miracle173 8 May 2017 в 14:01
  • 4
    @ZanLynx: Не только на занятых серверах. Представьте, что вы /tmp в отдельной файловой системе (например, tmpfs) и что-то создали файлы в /tmp, прежде чем она стала точкой монтирования в другую файловую систему. Теперь эти файлы находятся в корневой файловой системе, затененных точкой монтирования, и вы не можете получить к ним доступ без перезагрузки в режим восстановления (который не обрабатывает /etc/fstab) или, как вы предлагаете, привязки. – David Foerster 3 June 2017 в 19:58

На самом деле не ответ, но добавление.

Вам тяжело не хватает места и не удается установить ncdu из ответа @erman.

Некоторые предложения

sudo apt clean all для удаления пакетов, которые вы уже загрузили. SAFE sudo rm -f /var/log/*gz файлы журнала очистки более чем через неделю или две - не будут удалять более новые / текущие журналы. MOSTLY SAFE sudo lsof | grep deleted перечисляет все открытые файлы, но фильтрует их до тех, которые были удалены с диска. FAIRLY SAFE sudo rm /tmp/* удаляет некоторые временные файлы - если что-то их использует, вы можете нарушить процесс. НЕ ДЕЙСТВИТЕЛЬНО, ЧТО БЕЗОПАСНО

Чтобы `lsof можно было бы возвращать такие строки:

server456 ~ $ lsof | grep deleted init 1 root 9r REG 253,0 10406312 3104 /var/lib/sss/mc/initgro ups (deleted) salt-mini 4532 root 0r REG 253,0 17 393614 /tmp/sh-thd-1492991421 (deleted)

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

Другие общие подозреваемые здесь включают в себя syslog / rsyslog / syslog-ng, squid, apache , или любой процесс, выполняемый вашим сервером, который является «тяжелым».

2
ответ дан 24 July 2018 в 20:16

Другие вопросы по тегам:

Похожие вопросы: