Задать вопрос
@nonvon

При попытке чтения каталога ls /root процесс зависает, как починить?

Собственно в эту папку нагенерировалось 15 миллионов файлов по крону через wget

Я проблему устранил, папку почистил. но теперь при любой попытке чтения дериктории всё зависает. ssh работает. В логах ничего подозрительного. И да процесс зависший невозможно снять - он просто не убивается (( только ребут. А пока процесс не снимешь - сервер не реагирует на другие команды от рута. С правами на папку вроде всё в норме команда cd работает. Как починить? может файловая уже не торт? Никто не сталкивался?

И да - первое время всё было в норме.

61e949d4a3407759946592.png
61e949f00ae2b031463711.png

смущает размер папки - он досих пор 600 мегов
  • Вопрос задан
  • 741 просмотр
Подписаться 2 Средний 10 комментариев
Решения вопроса 1
@nonvon Автор вопроса
В общем проблема решена

61e950d2311dc988024137.png

вот что было в папке.

получается что каким то образом запускался этот скрипт (установщик панели (() - возможно из-за неправильных прав на папку - на скринах в топике правильные )))

Всем огромное спасибо за то что пытались помочь - сам был в шоке от проблемы ((( то работает, то не работает

может кстати подскажите почему так было?
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
shurshur
@shurshur
Сисадмин, просто сисадмин...
По умолчанию ls не только читает каталог, но и делает stat на каждый файл, чтобы цветом показать их тип и executable bit. Это очень замедляет процесс.

Обойти вызовом ls без параметров, заданных в alias ls:

$ alias ls
alias ls='ls --color=auto'
$ ls # вызывает алиас
$ 'ls' # вызывает обычный ls без параметров


Но лучше не выводить в консоль (особенно если сервер открыт по сети) - это будет очень долго - а перенаправить в файл и потом просмотреть.

'ls' /root > /tmp/list_of_files
less /tmp/list_of_files


Удалить файлы проще всего с помощью find:

find /root -name 'index.html.*' -delete
Ответ написан
@AVKor
ls /root

Собственно в эту папку нагенерировалось 15 миллионов файлов по крону через wget

Никто не сталкивался?

Нет. root существует для администрирования системы, а не для того, чтобы в его каталог качать триллионы файлов.
Ответ написан
@voleg4u
http://www.voleg.info/
Ext4 это хорошо, я опасался что там btrfs. А так всё пучком. "ls" подвисает потому что там всё еще миллионы файлов. Эта операция вызывает бешенный диск IO и использует много памяти (или, еще хуже, своп). Поэтому всё замирает в этом мире. Если посмитришь на размер "ls -lhd /root" самой директории - ужаснёшся. Лучщий способ ремонта тебе уже предложили - спасти всё нужное (обычно это .ssh , всё остальное - наживное) и снести всю директорию, потом создать её заново и вернуть спасённые файлы.
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
Я подозреваю, что структура файловой системы расширяет размер каталога, чтобы в него поместился список из 15 млн файлов, а вот уменьшать размер каталога уже не умеет.
То есть когда файлы были созданы, блоки были аллоцированы под "/root" и все, теперь ls будет вычитывать весь объем, несмотря на то, что в нем используется только несколько записей.

Я рекомендую создать новый каталог, перенести в него все видимое содержимое, и грохнуть старый, потом новый каталог переименовать в root

но похоже это уже сделали.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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