2016-05-17 2 views
2

Если формулировка вопроса неверна, сообщите мне. Это может объяснить, почему я не могу найти ответ.Команда Linux du без обхода смонтированных файловых систем

Я хочу найти использование на моем главном диске, используя команду:

du -sh /* 

Проблема в том, что у меня есть несколько точек монтирования на корневом уровне, и я хотел бы du пропустить эти ,

Я думал, что этот вариант -x должен был сделать это, но я не понимаю, что он делает, или я использую его неправильно.

Как я могу применить du только к корневому диску без прохождения дополнительных монтировок?

Благодаря

+0

Другими словами, вы ищете краткое использование '/ bin','/etc' и других папок под '/', исключая '/ run','/proc/','/sys', и так далее? – jamieguinan

+0

У меня также есть дополнительные диски, установленные на '/ data' и'/backup' и т. Д., Но это в основном правильно. – Manngo

+0

Я думаю, что вы используете 'du' правильно, проблема в том, что'/* 'расширяется, чтобы включать каждую точку монтирования под'/', а затем' du' итерации по каждому из них, что побеждает использование '-x'. Единственный способ решить это может быть с творческим скриптом. – jamieguinan

ответ

2

Это Hacky, но это, кажется, что вы хотите, от оболочки,

for d in /*; do egrep " ${d} " /proc/mounts > /dev/null || du -sh ${d}; done 

Добавить sudo перед du, если это необходимо.

+0

Извините, я так долго принял это. Ваш комментарий выше, я думаю, объясняет _why_ '-x' не работает, и ваш ответ - это решение. В моем собственном использовании я изменил его следующим образом: 'for i in/*; сделайте, если! mountpoint -q "$ i"; затем du -sh $ i; Fi; сделано; '. благодаря – Manngo

5

du -x не будет пересекать точки монтирования он сталкивается. Но если сообщается , начните в точке монтирования, тогда он будет делать по запросу.

Смежные вопросы