#bash
#bash
Вопрос:
Нужен скрипт, который выполняет du -m — суммирование по ряду каталогов для идентификации людей, который выводит информацию об определенных каталогах, таких как%, размер, без необходимости их cd и проверки вручную, как это:
tmpfs 7.8G 8.2M 7.8G 1% /dev/shm
tmpfs 5.0M 12K 5.0M 1% /run/lock
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
Использование должно быть ниже 90%. пока я получил
#!/bin/bash
df -Ph | awk ' $5>=10 || $1=="Filesystem"'
if df -Ph | awk ' $5<=10 || $1=="Filesystem" { if ( $5<=10) exit(1) ; else exit(0) }'
then du -h | sort -nr | head -10
else echo Fail usage is less from 10%
fi
не уверен, что это охватывает несколько каталогов
Комментарии:
1. Перейдите в каталог, в котором, как вы знаете, есть дочерние каталоги и другие дочерние каталоги, а затем запустите
du -h
без каких-либо|.....
и убедитесь сами? Сравните это с выводомdu -h *
. Удачи.2. Забыл о моем
du
тесте goto, используйdu -sh *
из родительского каталога. Это суммирует все дочерние каталоги ниже первого уровня, поэтому./local/bin
суммируется в значение для./local
, просто для примера. Не ясно, поможет ли это вам, но я предлагаю это на всякий случай. Удачи.
Ответ №1:
Первое, что я бы предложил, это уменьшить шум, создаваемый исходной командой df, и поэтому использовать:
df --output=target,pcent
Это даст вам только целевую точку монтирования в первом столбце, а затем процент, используемый во втором.
Для вашей команды du вам нужно будет либо находиться в каталоге, для которого вы хотите проверить место, либо использовать каталог как часть команды. Я бы также подумал о глубине, которую вы хотите проверить (сколько каталогов в древовидной структуре) Это вызывает проблемы в вашем решении, поскольку оператор awk просто возвращает код выхода и не указывает точку монтирования ни на cd, ни на использование в команде du
Поэтому, если вы ищете данные du для точек монтирования более 10%, я бы написал решение следующим образом:
df --output=target,pcent | awk ' $2 > 10 { system("du -h --max-depth=1 "$1) } $2 <= 10 { print $1" - Usage less than 10%" }'
Для процентов более 10 ( 2 доллара) используйте системную функцию awk для выполнения команды du с максимальной глубиной 1 в точке монтирования (каталог) — 1 доллар. Во всех остальных случаях. выведите, что «использование составляет менее 10%»
Примечание — Поскольку команда du создается в awk, я бы всегда предлагал распечатать команду перед выполнением и поэтому запустить команду awk с помощью print вместо system, чтобы убедиться, что выполняемые команды верны перед фактическим выполнением с помощью системной функции и так далее:
df --output=target,pcent | awk ' $2 > 10 { print "du -h --max-depth=1 "$1 } $2 <= 10 { print $1" - Usage less than 10%" }'