LINUX.ORG.RU
ФорумAdmin

Directory index full и ls не работает на одной папке

 , , ,


0

2

Всем привет, в логах появилось сообщение EXT4-fs warning (device sdb1): ext4_dx_add_entry:2022: Directory index full! Вроде нашли папку, но посмотреть что в ней, хотя бы часть не могу… Вот у меня и родился вопрос а можно увидеть частично, что в этой папке. К примеру так тоже ничего не выдает… unbuffer ls | unbuffer head -n 2

Сиду, голову ломаю, может есть люди умнее меня и уже знают как это сделать ? )

Ответ на: комментарий от mky

Я даже не знал про такую тулзу, спасибо!

Примерно такой вывод strace ls -f

brk(NULL)                               = 0x5f11000
brk(0x5f32000)                          = 0x5f32000
getdents(3, /* 341 entries */, 32768)   = 32736
getdents(3, /* 341 entries */, 32768)   = 32736
getdents(3, /* 341 entries */, 32768)   = 32736
getdents(3, /* 341 entries */, 32768)   = 32736
brk(NULL)                               = 0x5f32000
brk(0x5f53000)                          = 0x5f53000
getdents(3, /* 341 entries */, 32768)   = 32736
getdents(3, /* 341 entries */, 32768)   = 32736
getdents(3, /* 341 entries */, 32768)   = 32728
getdents(3, /* 341 entries */, 32768)   = 32736
getdents(3, /* 341 entries */, 32768)   = 32736
brk(NULL)                               = 0x5f53000
brk(0x5f74000)                          = 0x5f74000
getdents(3, /* 341 entries */, 32768)   = 32736
getdents(3, /* 341 entries */, 32768)   = 32736
getdents(3, /* 341 entries */, 32768)   = 32736
getdents(3, /* 341 entries */, 32768)   = 32736

strace ls -1f

write(1, "ZmFrZS83ZWZiZDgyMDg3YWE1ODljOjE3"..., 73ZmFrZS83ZWZiZDgyMDg3YWE1ODljOjE3NTkyNDVkNWVhOjE3NTkyNDVkNWViOjYwYWFkNjJl
) = 73
write(1, "ZmFrZS9lNTI0MDIzOTY0NDExZGUzOjE3"..., 73ZmFrZS9lNTI0MDIzOTY0NDExZGUzOjE3NWFjMTNlNjIzOjE3NWFjMTNlNjI0OmM1Nzk1NWJh
) = 73
write(1, "ZmFrZS8zZjFlNWEzM2JmYTExYjVjOjE3"..., 73ZmFrZS8zZjFlNWEzM2JmYTExYjVjOjE3NWEzNjI2YzkyOjE3NWEzNjI2YzkzOjVhZjQzY2Fm
) = 73
write(1, "ZmFrZS9kZTUyNGQ4MjViYjFlNzEwOjE3"..., 73ZmFrZS9kZTUyNGQ4MjViYjFlNzEwOjE3NTlmNWM4MjRjOjE3NTlmNWM4MjRkOjhjODU0OWVk
) = 73

Ну и идет это все дело как будто бесконечно…

ReZooR ()
Ответ на: комментарий от ReZooR

ls -1 -U

и должен выплёвывать. Ну, или ″ls -1 -f″, тем более, если под strace он у вас даёт ″write(1,)″, то есть вывод на stdout.

И тут на форуме эта тема обсуждалась, и, ЕМНИП, проблемы с rm будут. По второй ссылки, что я приводил, мой простой код на Си, который тупо удаляет все файлы в подобном каталоге. Читайте...

P.S. Вместо du можете посмотреть ″ls -l -d имя_каталога″. Там будет безумный размер. Его поделите на, допустим, 80, получите примерное число файлов.

mky ★★★★★ ()

Мне несколько раз приходилось удалял каталоги 800-900к файлами.

Самым быстрым оказалось find . -type f -delete

посмотреть можно через find

vel ★★★★★ ()