Unix

如何找到循環符號連結?

  • August 18, 2013

我正在研究 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 並將其通過管道傳輸到一些可以解析錯誤消息的腳本。

引用自:https://serverfault.com/questions/265598