サーバー障害で、シンボリックリンクチェーンを一覧表示する方法は? (私の質問ではありません) すべてのシンボリック リンクを一覧表示し、それらをたどることについて話します。これを実行可能にするために、最初に単一のディレクトリを考えてみましょう。
これを行う短いユーティリティを書きたいと思います。シンボリック リンクのペアをハッシュに入れ、ハッシュを処理するのは簡単に見えます。
しかし、次のようなものがあるかもしれません:
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
ポイントを知るには、少し従う必要があります。
1 つのハッシュ表現は次のとおりです。
a => b
b => c
c => a
trap => b
x => y
y => b
しかし、ループが何であるかがわかれば、ループを不適切な開始点にマークするには、逆の表現の方が適しています。
そこで、いくつか質問があります:
- ハッシュはシンボリックリンクを表現するのに最適な構造ですか?
- ファイルシステムのグラフを分離して、ツリーコンポーネントからループタイプの小枝にルーピーコンポーネントを伝える最良の方法は何ですか?
- すべての開始点からすべてのループを手動で検索するよりも優れたアルゴリズムはありますか?
- グラフ理論の観点から -- この種のものはすでにCPANにあるのでしょうか? そうでない場合、良いヘルパー モジュールは何ですか?