LINUX.ORG.RU

Глюк find или ext3. Как такое может быть?


0

0

Решил почистить tmp от старых файлов. делаю find /tmp -atime +3, получаю большой список. Ага, делаю find /tmp -atime +3 -exec rm -rf {} \; Получаю - /tmp - нет такого файла или каталого. Гляжу, действительно нет. (Не догодался посмотреть сразу $?) Как корова языком слезала. В dmesg ничего нет, в lost-found тоже... Я фигею.

rm первым делом удалил /tmp/. :)

nu11 ★★★★★
()

Фокус в том, что find нашёл так же и сам каталог /tmp (причём самым первым). А rm -rf его успешно снесла вместе с содержимым.

Теги: ПМХ, дверь

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

ну, очень просто. вторым делом он попытался удалить какой-то другой каталог в подкаталоге /tmp

val-amart ★★★★★
()
Ответ на: комментарий от saturn721

> Хм, и затем уже было сообщение про отсутствие каталога? Как то это странно.

Ничего странного. Скорее всего либо внутри самого find'а, либо внутри функций которые он использует для поиска, проиводится буферизация. Так что он сначала нашёл пачку файлов, например

/tmp
/tmp/file1
/tmp/file2
...

А потом уже по очереди начал делать на них rm -rf

rm -rf /tmp # снесло всё
rm -rf /tmp/file1 # ОПА! а /tmp то уже нет...

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

> А как быть с atime +3, это вроде доступ был более 3 суток назад.

Раздел примонтирован с noatime? Или может для директорий atime как-то хитро изменяется? Погугли.

Deleted
()

джедаи, следящие за своими balls, делают обычно

find > somelempfile
vi sometempfile
беглый осмотр
а только потом уже удаление всего, что записано в sometempfile

MyLan
()

find /tmp -atime +3 -type f -delete
find /tmp -type d | xargs rmdir

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

Дистр, который со временем преврщается в помойку не нужен :)

YAR ★★★★★
()
Ответ на: комментарий от Deleted

Ага, noatime. Джедай взял эту команду в учебнике и от себя добавил опцию -r к rm, это его погубило.

saturn721
() автор топика

> Глюк find или ext3. Как такое может быть?

Это - без сомнений глюк ext3/ext4.

Отмонтируй, fsck'ни, примонтируй - файло появится. Причём такое бывает только с rm -rf. Если удалять по одному, т.е. find /tmp -atime +3 -delete, то эффект не проявляется.

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

Ой, не дочитал топикстартера, в общем я описал другой случай, когда rm -rf не доходит до конца, и не может удалить директорию, хотя она пуста.

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

> у меня весит в tmpfs, в каком-то дистре так нельзя сделать?

а инсталляторы распаковывающие по 4 гб ты как mkdir /newtmp && chmod 0777 /newtmp && TMPDIR=/newtmp/ ./installer.run запускаешь?

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

Хотя сейчас find /tmp -atime +3, не находит один /tmp, только /tmp/bla-bla
/tmp/bla-bla

saturn721
() автор топика

- find /tmp -atime +3 -exec rm -rf {} \;
+ find /tmp -depth -atime +3 -exec rm -rf {} \;

По дефолту find сначала обрабатывает каталог, а потом содержимое. -depth заставляет делать наоборот: сначала оперировать с содержимым, а потом с самим каталогом.

man find (/-depth)

Slavaz ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.