utime
/utimes
syscall позволяет Вам установить время доступа и время изменения произвольно. Таким образом, Вы можете stat
файл, затем используйте utime
изменить только одного из них. Из страницы справочника:
Имя:
utime, utimes - файл изменения длится доступ и время изменения
РЕЗЮМЕ
#include
#include int utime(const char *filename, const struct utimbuf *times); #include int utimes(const char *filename, const struct timeval times[2]); ОПИСАНИЕ
utime () системный вызов изменяет времена доступа и время изменения inode, указанного именем файла к actime и modtime полям времен соответственно.
Если времена являются ПУСТЫМИ, то времена доступа и время изменения файла установлены на текущее время.
Изменение меток времени разрешено когда: или процесс имеет appropri ‐, съел полномочия, или эффективный идентификатор пользователя равняется идентификатору пользователя файла, или времена являются ПУСТЫМИ, и процесс имеет разрешение записи для файла.
[ … ]
Попробуйте находят.
find -L /gluster_broken -mindepth 10
найти циклы ссылки
затем не рекурсивный rm
на ошибочном файле (файлах)
находка перейдет по ссылкам и найдет те же "слишком много уровней" ошибкой. Я использую-mindepth для отфильтровывания чего-либо меньше чем 10 глубоко для предотвращения хорошо файлы/каталоги. Да, это предполагает, что Вы не имеете больше что 10 глубоко в Вашем нормальном дереве. Вся эта команда пытается сделать, находка файл по ошибке.
- редактирование
Я думаю после команды, лучше,
find -L /gluster_broken >/dev/null
Вот мой тест
$ find .
.
./dira
./dira/a
./dira/dirb
./dira/dirb/dirc
./dira/error
./dira/b
./dira/test
./dira/test/ab&<cd.file
./dira/test/magic?newlines
./dira/test/cleanup
$ find -L . >/dev/null
find: ‘./dira/a’: Too many levels of symbolic links
find: ‘./dira/error’: Too many levels of symbolic links
find: ‘./dira/b’: Too many levels of symbolic links
$
---редактирование 2
Я думаю, что мое предложение (комментарий) проверяет, что файловая система могла бы быть лучшей, я только что видел этот ответ и задаюсь вопросом, есть ли у Вас подобная проблема.
Я недавно столкнулся с этой же проблемой при создании SymLink, не давая ему абсолютный каталог.
Это дало ту же ошибку при попытке прочитать файл («Слишком много уровней симликовых»):
ln -s ./config ~/.config/terminator
, казалось бы, потому что симличинка пытается вернуться на себя:
ls -l ~/.config/terminator
lrwxrwxrwx 1 zane zane 8 Dec 22 16:14 config -> ./config
, но это сработало:
ln -s /home/zane/config ~/.config/terminator/config
, надеюсь, Это поможет кому-то в той же ситуации.
Возможно Я ошибаюсь, но, похоже, на вопрос больше никто не ответил.
Проблема в том, что у вас есть /
в конце вашей команды.
Вместо
rm gluster/
просто запустите
rm gluster
. Помещая /
в конец, вы пытаетесь перейти в каталог, который является циклической ссылкой, поэтому она никогда не находит дно. Без /
вы просто удаляете символическую ссылку.
Вы не можете удалить /gluster _сломанный/домой, потому что /gluster _сломанный является неработающей ссылкой.
ls -l /gluster_broken
вы увидите, что это ссылка.Так что удали:
rm /gluster_broken
-maxdepth 10
не должен ли быть. Я отредактирую. – X Tian 04.02.2014, 20:05ls -l /gluster_broken
. – X Tian 05.02.2014, 17:14