Назад | Перейти на главную страницу

Как найти круговые символические ссылки?

Я работаю над системой HP-UX и хочу узнать, есть ли там круговые символические ссылки.

Пока что использую команду:

ls -lrt  `find ./ -follow -type l`

Но в результате он выполняет ls -lrt только в текущем каталоге.

Какую команду мне следует использовать, чтобы найти все круговые символические ссылки в системе?

В справочной странице GNU find говорится, что все находки POSIX должны обнаруживать петли файловой системы и выдавать сообщения об ошибках в этих случаях, и я протестировал

find . -follow -printf ""

на GNU find, который смог найти циклы вида ./a -> ./b и ./b -> ./a печать ошибки

find: `./a': Too many levels of symbolic links
find: `./b': Too many levels of symbolic links

(это также работало на a->b->c->a)

Аналогичным образом петли формы ./foo/x -> .. и ./foo/a -> ./bar + ./bar/b -> ./foo распечатал ошибки

find: File system loop detected; `./foo/a/b' is part of the same file system loop as `./foo'.
find: File system loop detected; `./bar/b/a' is part of the same file system loop as `./bar'.
find: File system loop detected; `./foo/x' is part of the same file system loop as `.'.

Если вы хотите что-то сделать с выводом, кроме его чтения, вам нужно будет перенаправить его со stderr на stdout и передать его какому-нибудь скрипту, который может анализировать сообщения об ошибках.