du на электронном диске отображает на 3 ГБ меньше, чем df

Они похожи на ту же команду, но причиной, они отличаются, является состояние системы, изменился в результате первой команды. А именно, первое cat использованный весь файл, таким образом, второе cat не имеет ничего больше для чтения, EOF хитов (конец файла) сразу, и выходы.

Причина позади этого - Вы, используют то же самое описание файла (тот, с которым Вы создали exec < infile и присвоенный дескриптору файла 3) для обоих вызовов cat. Одной из вещей, связанных с открытым описанием файла, является файловое смещение. Так, первое cat читает весь файл, оставляет смещение в конце, и второй пытается поднять с конца файла и находит, что ничто не читает.

3
19.11.2013, 22:20
2 ответа

Скорее всего, некоторые файлы были удалены из электронного диска, в то время как некоторые процессы все еще имеют открытый дескриптор файла на них. Простой способ проверить это с lsof /home/stuff/ramdisk, файлы, которые открыты, но больше в файловой системе, будут отмечены с' (удаленным)'.

Например, здесь я удалил файл '/dev/shm/test', в то время как он все еще открыт сценарием Python:

% df -h /dev/shm
Filesystem      Size  Used Avail Use% Mounted on
shm             512M  257M  256M  51% /dev/shm
% du -h /dev/shm
84K    /dev/shm
% lsof /dev/shm
COMMAND     PID     USER   FD   TYPE DEVICE  SIZE/OFF  NODE NAME
[...]
python    39756 adaephon    5r   REG   0,13 268435456 44790 /dev/shm/test (deleted)
3
27.01.2020, 21:23

Вы могли

  • имейте файлы, которые были удалены на электронном диске, но все еще открыты некоторыми процессами или потоками? [после того как они обрабатывают/распараллеливают выход, ОС действительно освободит те inodes, и таким образом df сообщит о на 3 ГБ меньше, чем прежде]

  • имеет много вещей в каталоге/файле не достижимый du? [параноидальный? мог быть некоторый руткит или скрытая противность...]

и я уверен, что будут другие возможности, появляющиеся в моей голове [метаданные по файловой системе? это журналируется? у Вас есть много файлов? "du" игнорирует вещи в "lost+found" каталоге или его эквиваленте на любом FS, который Вы используете? и т.д.]

0
27.01.2020, 21:23
  • 1
    другая возможность: ошибка в "du-h" то, чтобы заставлять это суммировать вещи со слишком большим приближением (и если у Вас есть много файлов, несоответствие складывает)? очень вряд ли, хотя, du, вероятно, использует нормальный алгоритм ^^ –  Olivier Dulac 19.11.2013, 22:37

Теги

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