powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / find, rm - No such file or directory
9 сообщений из 34, страница 2 из 2
find, rm - No such file or directory
    #34971513
RAndrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот ведь... в конце вместо символа ;, символ +

кнопки "редактировать" нет? 8\
...
Рейтинг: 0 / 0
find, rm - No such file or directory
    #34973506
Вопрошатель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Scott TigerПокажи целиком.
...
Рейтинг: 0 / 0
find, rm - No such file or directory
    #34975951
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вероятная причина - параллельная работа 2 или более экземпляров этого скрипта либо этого скрипта и ещё какого-то механизма, удаляющего логи. Вот смотри: запускается find (начало трейса), открывает директорию:

Код: plaintext
1.
2.
3.
665/1:		open("/exp/bars/LOG/ARC", O_RDONLY|O_NDELAY|O_LARGEFILE) = 4
665/1:		fstat64(4, 0xFFBFF0B0)				= 0
665/1:		fcntl(4, F_SETFD, 0x00000001)			= 0

делает getdents в несколько проходов

Код: plaintext
665/1:		getdents64(4, 0x000294D0, 8192)			= 8160

и далее для каждого полученного в проходе имени файла получает информацию о нём (lstat)

Код: plaintext
1.
665/1:		lstat64("/exp/bars/LOG/ARC/1_23720_556542949.log.gz", 0xFFBFF090) = 0

В какой-то момент файла, имя которого получилось в результате работы getdents, на диске не оказывается, и lstat возвращает ошибку:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
665/1:		lstat64("/exp/bars/LOG/ARC/1_23483_556542949.log.gz", 0xFFBFF090) Err#2 ENOENT
665/1:		fstat64(2, 0xFFBFE250)				= 0
665/1:		write(2, " c a n n o t   o p e n  ", 12)	= 12
665/1:		write(2, " / e x p / b a r s / L O".., 42)	= 42
665/1:		write(2, " :  ", 2)				= 2
665/1:		write(2, " N o   s u c h   f i l e".., 25)	= 25
665/1:		write(2, "\n", 1)				= 1

Получается, что, с точки зрения getdents, файл есть, а, на самом деле, его нет :) Скорее всего, он был удалён в процессе между вызовами getdents и lstat, хотя вероятность этого мне представляется небольшой. Также небольшой представляется вероятность наличия бага в какой-либо широкоизвестной библиотечной функции, типа readdir или как там find написан...

Ещё интересный вариант - повреждение файловой системы, я бы fsck прогнал.


Есть рыба-пила и есть рыба-молот. Вот только не понятно, что они там строят...
...
Рейтинг: 0 / 0
find, rm - No such file or directory
    #34977175
RAndrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такое подозрение, что когда файл -- символическая ссылка на не существующий файл, то getdents() его увидит, а lstat() вернёт ENOENT.
...
Рейтинг: 0 / 0
find, rm - No such file or directory
    #34977182
Вопрошатель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Scott Tigerс точки зрения getdents, файл есть

вот этого я не вижу :(

где-то есть про этот 23483?

пока сдвинул задание на "пораньше".
...
Рейтинг: 0 / 0
find, rm - No such file or directory
    #34977267
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрошатель Scott Tigerс точки зрения getdents, файл есть

вот этого я не вижу :(

где-то есть про этот 23483?

пока сдвинул задание на "пораньше".

Здесь не видно :) Очевидно, что lstat выполняется не от балды для каких файлов, а для тех, имена которых возвращает getdents.
...
Рейтинг: 0 / 0
find, rm - No such file or directory
    #34977273
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RAndrewЕсть такое подозрение, что когда файл -- символическая ссылка на не существующий файл, то getdents() его увидит, а lstat() вернёт ENOENT.

Ну в коде find не должно быть непосредственных вызовов getdents, судя по man getdents. Ну и банальный эксперимент не подтверждает эту гипотезу :)
...
Рейтинг: 0 / 0
find, rm - No such file or directory
    #34977359
RAndrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Scott TigerНу и банальный эксперимент не подтверждает эту гипотезу :)

А что вернул, если не секрет?
...
Рейтинг: 0 / 0
find, rm - No such file or directory
    #34977861
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RAndrew Scott TigerНу и банальный эксперимент не подтверждает эту гипотезу :)

А что вернул, если не секрет?

Ну нормально отработал и с симлинками, всё нашёл.
...
Рейтинг: 0 / 0
9 сообщений из 34, страница 2 из 2
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / find, rm - No such file or directory
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]