df, du сообщают о неправильном использовании диска

Это работает (код, отредактированный для получения значения только для пользователя по умолчанию):

awk -F'= ' '/default:/,/umask =/{ if(/umask =/){ print $2 } }' /etc/security/user

-F устанавливает разделитель поля ввода. Код соответствует строкам umask = в них и печати их вторые поля.

4
04.02.2015, 23:14
2 ответа

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

$ du ~
4      /home/bob/Videos
40     /home/bob/.cache/abrt
43284  /home/bob/.cache/mozilla/firefox
43288  /home/bob/.cache/mozilla
12     /home/bob/.cache/imsettings
48340  /home/bob/.cache
4      /home/bob/Documents
48348  /home/bob

, если учесть опцию -A , он дополнительно показывает размер каждого файла.

С опцией -S он покажет только общий размер каждого файла аргумента или дерева каталога.

$ du -s ~
48348  /home/bob
$ du -s ~/*
4      /home/bob/Videos
4      /home/bob/Documents

Итак, когда вы работаете

$ du -b ~ | wc -l
15041

$ du -b ~ | sort -n | head -n 15040 | cut -f 1 | \
    perl -ne 'BEGIN{$i=0;$i+=$_;END{print $i.qq|\n|;}'
12735983847

, вы подводятся размером всего в вашем домашнем каталоге - несколько раз, к сожалению, потому что размер, сообщаемый на каждой строке, включает в себя все подкаталоги - но потому что вы опущены окончательную линию DU вывод, который будет линейкой для / Home / Steven , du не подсчитал размер любого из обычных файлов в верхнем уровне вашего домашнего каталога Отказ Таким образом, сумма не включала в себя ваш очень большой .xsession-errors файл.

И когда вы работаете

du -sb ~ returns 91296460205, but the sum of du -sb ~/* is only 1690166532

ваш DU -SB ~ / * вывод не включал какие-либо файлы или каталоги в домашнем каталоге, который начинается с . .

Оба DU ~ | хвост -1 и DU -S ~ должен выполнить разумную работу по отображению использования диска вашего домашнего каталога (не включая удаленные, но открытые файлы, конечно), но если вы хотите получить сумму Все размеры файлов, не полагаясь на du , вы можете сделать что-то подобное (при условии, что современный находит , который поддерживает формат % s , чтобы показать размер в Байты):

find ~ -type f -printf '%s\n' | perl -ne 'BEGIN{$i=0;$i+=$_;END{print $i.qq|\n|;}'
4
27.01.2020, 20:52

При запуске ps -el вместо ps -ef появится столбец S с состоянием процесса. Я предполагаю, что процесс находится в состоянии D , что означает бесперебойное ожидание.

Другими словами, процесс застрял в более тонких частях драйвера устройства, и ядро не думает, что его безопасно убить, пока драйвер устройства не отпустит его. Иногда это происходит с процессами, которые взаимодействуют с больными серверами NFS, или с устройствами с ошибками. В этом случае это похоже на разговор с устройством захвата видео.

К сожалению, нет способа «серебряной пули», чтобы отменить процесс из D-wait, за исключением перезагрузки системы. Можно попробовать использовать команду Solaris truss , чтобы узнать, что программа сделала прямо перед тем, как застряла, но с этим, возможно, ничего не поделаешь. Возможно, у вас просто есть драйвер устройства багги.

Наконец, причина изменения родительского pid на 1 заключается в том, что killall успешно уничтожает родительский процесс. Каждый раз, когда процесс завершается, все его дочерние процессы наследуются pid 1. Это незначительная тайна, почему строка ps -f для родительского процесса не соответствует grep .

-121--97790-

Из руководства cryptsetup :

Удаление последней парольной фразы делает контейнер LUKS постоянно недоступным.

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

Боюсь, вам придется восстановить данные из резервной копии.

-121--99163-

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

После установки coreutils GNU можно запустить stat --file-system $ HOME для определения размера блока файловой системы.

В среднем файлы будут тратить половину блока. Умножьте половину блока на количество файлов в $ HOME и проверьте, близок ли результат к 70GiB. Если да, то ваша тайна раскрыта.

2
27.01.2020, 20:52

Теги

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