在服务器故障上,如何列出符号链接链?(不是我的问题)谈到列出所有符号链接并关注它们。为了使这可行,让我们首先考虑一个目录。
我想编写一个简短的实用程序来执行此操作。将符号链接中的对放入散列然后处理散列看起来很容易。
但后来我可能有类似的东西:
ls -l
total 0
lrwxrwxrwx 1 pjb pjb 1 2010-02-23 08:48 a -> b
lrwxrwxrwx 1 pjb pjb 1 2010-02-23 08:48 b -> c
lrwxrwxrwx 1 pjb pjb 1 2010-02-23 09:03 c -> a
lrwxrwxrwx 1 pjb pjb 1 2010-02-23 09:17 trap -> b
lrwxrwxrwx 1 pjb pjb 1 2010-02-23 09:17 x -> y
lrwxrwxrwx 1 pjb pjb 1 2010-02-23 09:17 y -> b
很明显这a->b->c
是一个循环,并且那个陷阱指向一个循环,但是要知道x
指向一个循环的点,我需要遵循一点。
一种哈希表示是:
a => b
b => c
c => a
trap => b
x => y
y => b
但是,一旦我知道循环是什么,反向表示更适合将循环标记到错误的起点。
所以这里有一些问题:
- 散列是表示符号链接的最佳结构吗?
- 将文件系统图分开以将循环组件从树组件告诉带有循环类型片段的树枝的最佳方法是什么?
- 有没有比从所有起点手动搜索所有循环更好的算法?
- 从图论的角度来看——CPAN中已经有这种东西了吗?如果没有,有哪些好的辅助模块?