Несоответствие между "du" и "df"

Используйте правильный инструмент парсера csv:

csvtool -t '|' -u ',' cat infile > outputfile
var1,var2,var3
"Potter, Harry",2,3

изcsvtool --help:

-t   Input separator char.  Use -t TAB for tab separated input.
-u   Output separator char.  Use -u TAB for tab separated output.
cat
    This concatenates the input files together and writes them to
    the output.  You can use this to change the separator character.  
0
23.03.2020, 19:23
2 ответа

В моем случае (, и вы помогли мне в ПМ, сказав мне то же самое ), что это была проблема с -монтированием. У меня были некоторые данные в каталоге на разделе, которые duне мог видеть, потому что их скрыло монтирование.

Поэтому попробуйте размонтировать все монтирования и поискать данные в оставшихся каталогах.

Хорошего времени и спасибо!

1
28.04.2021, 23:19

Возможно, у вас есть приложение/процесс, в котором открыт этот файл. Когда вы удаляете файл, открытый приложением, ОС по-прежнему видит размер файла в df, поскольку файл все еще открыт в памяти.

Вот некоторая документация, которую я написал для коллеги, и она должна предоставить вам то, что вам нужно.

Усекать большие открытые файлы

Вы удалили файлы, чтобы освободить место, но после этого место не освободилось. Теперь df -lah и du -lah показывают разные размеры

Используйте LSOF для получения удаленных, но удерживаемых файлов

lsof |grep deleted

Здесь будут показаны все файлы, удаленные, но открытые приложением.

java       2943  gateway  410w      REG              253,3  50482102     139274 /opt/span/app/node/default/var/attachments/att180368_0.part (deleted)
java       2943  gateway  411w      REG              253,3  46217973     139284 /opt/span/app/node/default/var/attachments/att182230_0.part (deleted)
java       2943  gateway  412w      REG              253,3  50483894     139280 /opt/span/app/node/default/var/attachments/att181920_0.part (deleted)

Вы можете либо перезапустить приложение, чтобы разблокировать файлы, либо обрезать файлы.

Чтобы обрезать файлы, вам нужно будет посмотреть на вывод выше, чтобы получить PID и номер файлового дескриптора fd ().

обрезать файл с помощью

echo > /proc/PID/fd/fd_number

Пример :Чтобы обнулить размер файла из трех перечисленных выше, вы должны выполнить следующее

echo > /proc/2943/fd/410 
echo > /proc/2943/fd/411
echo > /proc/2943/fd/412

если у вас есть много, чтобы урезать bash на помощь.

for n in {410..412}; do 'echo  > /proc/2943/fd/$n'; done;

df -lah теперь должно показывать свободное место НО файлы будут отображаться в lsof |grep, удаленные, но будут иметь размер 1

java       2943  gateway  410w      REG              253,3         1     139274 /opt/span/app/node/default/var/attachments/att180368_0.part (deleted)
java       2943  gateway  411w      REG              253,3         1     139284 /opt/span/app/node/default/var/attachments/att182230_0.part (deleted)
java       2943  gateway  412w      REG              253,3         1     139280 /opt/span/app/node/default/var/attachments/att181920_0.part (deleted)

Дескрипторы файлов будут освобождены при следующей перезагрузке или перезапуске/перезагрузке приложения, открывшего файлы.

Конечно, вам придется настроить свои команды так, чтобы они соответствовали выходным данным ваших заблокированных файлов.

1
28.04.2021, 23:19

Теги

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