• ベストアンサー

シンボリックリンクについて

OSはRedhat5です。 シンボリックリンクの作成がうまくいきません。 実体がある作業ディレクトリ上でシンボリックリンクを作成すると参照できるのですが、 作業ディレクトリ以外に作成すると作成できるのですが、参照しようとすると「シンボリックリンクの階層が多すぎます」と出てきます。 こちらの質問コーナーの「質問番号:502147」にも同様の質問がされており、 自分自身へのシンボリックシンクを張ってたりしませんか? と回答されていますがよく意味がわからない状態です。 お手数ですがご教授頂けると助かります。

  • carper
  • お礼率47% (233/493)

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4844/10254)
回答No.3

#2です。。。再現しません。/a というファイルがないので、「そのようなファイルやディレクトリはありません」というエラーになります。 ln -s a /b だと、bの中身は「a」になるので、/a を参照しようとして存在しないとエラーになります。これはこれで正常な動きです。「シンボリックリンクの階層が多すぎます」というエラーが出る以上、/a というシンボリックリンクが存在するとしか思えません。 /b を /home/test/a へのシンボリックリンクにしたいなら、 絶対パスで ln -s /home/test/a /b または相対パスで ln -s home/test/a /b とします。

carper
質問者

お礼

指摘して頂いた通り絶対パスで行うと実体があるディレクトリ以外でも シンボリックリンクが作成できました。 実体を指定するパスがおかしかったんですね。 どうもありがとうございました。

その他の回答 (3)

noname#208124
noname#208124
回答No.4

ls -l でどこにリンクしているのか確認してみては?

  • notnot
  • ベストアンサー率47% (4844/10254)
回答No.2

具体的にどういう風にリンクを作ってますか? 間違っているのは間違いないです。

carper
質問者

お礼

[root@testserver /]# cd /home/test  テストディレクトリに移動して [root@testserver test]# touch a  ファイルaを作成 [root@testserver test]# ln -s a b testディレクトリ内にシンボリックリンクbを作成すると問題ありませんが [root@testserver test]# ln -s a /b シンボリックリンクを/下に作成すると [root@testserver test]# ls / で見てみると存在してはいるのですが [root@testserver test]# more /b /b: シンボリックリンクの階層が多すぎます となります。 作成する場所は本体があるディレクトリ以外はどこでも同じ結果になります。 以前Redhatでは問題なくできたはずなんですが。

  • eroermine
  • ベストアンサー率18% (83/444)
回答No.1

ファイル a が存在しない場合 ln -s a b ln -s b a これでお互いに参照することになるので、 cat a すると a ->b , b->a に参照が続いて行き参照の限界に達し a: Too many levels of symbolic links シンボリックリンクの階層が多すぎます と見当外れのエラーメッセージが出てしまいます。

carper
質問者

お礼

返信ありがとうございます。 上記試してみましたがおっしゃるとおりでした。 このような特殊場合ででないにも関わらず「シンボリックリンクの階層が多すぎます」 と出るのは何か問題があるのでしょうか。

関連するQ&A

  • シンボリックリンクからの被参照を調べたい

    サーバー上の要らなくなったディレクトリを削除しようと思っています。 ただ、その配下の階層のどこかに、他からシンボリックリンクで参照されているファイルやフォルダがあるかもしれません。 そういう状況の有無を手軽に調べる方法はあるのでしょうか。

  • Linuxのハードリンクついて。

    ディレクトリ”mydir2/mydir”内の各ファイルに対して、 ディレクトリ”mydir0”内にハードリンクをそれぞれ同じファイル名で作成せよ。 また、絶対パス、相対パスを用いて求めよ。 という問題(3問)があるのですが、さっぱりわからなくて困っています。 ln ファイル名 ハードリンク名_h くらいしか思いつかなくて・・・; そもそも、リンクを貼るのにパスは使えるのか?という疑問もあります・・・ 詳しい方、お手数ですが、ご教授よろしくお願いします!! 足りない情報がありましたら、追記いたします。

  • ホームページビルダーでリンクの一括変更

    ホームページビルダー7.0.1.0を使用しています。 サイト内の全てのページにコンテンツメニューのリンクを貼っています。 このメニューのリンクはURLをそのまま指定しています。 今リニュ作業中で、サーバー内にディレクトリを作って仮にソコにアップしているのですが コンテンツメニューのリンクのURLは現在、このディレクトリの中を指定しています。 このリニュ作業が終ると、このフォルダの中身を1階層上のディレクトリにアップするのですが その際、全ページのコンテンツメニューのURLを1階層上のURLに変更しなくてはいけません。 ビルダーでサイト内の全ページの同じリンクを一括で変更してくれる機能はありませんか? 宜しくお願いします。

  • LinuxのシンボリックリンクをMacで開きたい。

    LinuxのシンボリックリンクをMacで開きたい。 Fedora12を使用している初心者です。御教授ください。 /home/userディレクトリ内に、/var/www/htmlディレクトリのシンボリックリンクを作成し、これをSamba接続したMac OS10.5.5から参照しようとすると、ディレクトリではなくファイルとして見え、フォルダを開くことができませんでした。 そこで、smb.conf内にunix extention = noの記述を加えたところ、フォルダとして認識されるようになったのですが、中身は空の状態です。中身ファイルの所有権を777に変更してみたりもしたのですがダメでした。 対処方法をお教え下さい。

  • Word VBAでリンクの設定

    Word文書中に画像があります。 しかし、実体は文中ではなくリンクとなっています。 その場合、当然他のPCから参照した場合に画像が参照できません。 そこでVBAを使って画像を文書中に保存させようと思いますが、今のところ手段がわかりません。 手動では『リンクの設定』からできるのですが、その操作をマクロに記録しても何も残らないようです。 実際、可能なのでしょうか?ご存知の方、ご教授ください。 よろしくお願いします。

  • C言語でのディレクトリ作成についての質問です。

    C言語でのディレクトリ作成についての質問です。 Linuxコマンドのmkdir -pコマンドのようなことをC言語で実現したいのですが、 mkdir(dir1/dir2)のようにすると、エラーになってしまいます。 mkdir(dir1)のように階層でないディレクトリを指定した場合はうまくいくのですが・・・ mkdir関数では階層ディレクトリを1度で作成できないのでしょうか。 ディレクトリをたどってmkdirを1回ずつ使用しなければいけないのか、 階層ディレクトリを指定できる関数がほかにあるのか、 ご教授お願いいたします。

  • ダイナミックリンクライブラリについて。

    実行ファイルとは別に ダイナミックリンクライブラリというファイルがあって 実行時に メモリー上でこれらがリンク(連結)されて実行されます。 実行するたびにリンクするからダイナミックリンク(動的リンク)と呼びますが 反対に、実行ファイル作成した時点でライブラリもリンクしてあるのなら、 スタティックリンク(静的リンク)です。 スタティックリンクの場合、実行ファイルのサイズもそれだけ大きくなります。 と、プログラムというのは、階層構造です。 表面上に見えている機能は、プログラムそれぞれで違いますが どんなプログラムでも、ファイルの読み書きや画面の制御といったことは 行っています。 こういった階層構造の底辺の部分は、わざわざ自分で作らなくても 先人が作ってくれたもの(ライブラリ)を使い回せばよいのです。 で、疑問点が、2つあって①ダイナミックリンクライブラリとは、実行ファイルとダイナミックリンクライブラリというファイルが同時に実行される(まとめて)ということでしょうか? ②スタティックリンクで、実行ファイルのサイズもそれだけ大きくなる。とはどういうことでしょうか? ご教授頂けると幸いです。

  • ディレクトリ構成変更に伴うファイルへのリンク変更

    質問させていただきます。 現在、Aをルートディレクトリとする階層があります。 その階層のディレクトリ構成を変更して、 Bをルートディレクトリとする階層にします。 この状況で、 「Aの階層のファイルがBの階層のどこに行ったか?」 を調査したいです。 最初にtest.fileが 【A\123\test.file】 があったとして、 【B\456\789\test.file】 に位置が変更されたのならば、 「test.file」は A\123\test.fileからB\456\789\test.fileに変わった。 のようにです。 そのような調査ができるツールや、 簡単なプログラムの作成の仕方など ご存知の方いらっしゃいませんでしょうか? 正直、かなり困っております。 大変申し訳ありませんが、 宜しくお願いいたします。

  • dreamweaverのテンプレートでリンクが上手く貼れない

    dreamweaverのテンプレートを利用しているサイトを引き継ぎました。 下記のようなフォルダ階層です。 index.html aaa/index.html bbb/index.html bbb/ccc/index.html bbb/ccc/ddd/index.html Templates/main.dwt 新たに bbb/ccc/eee/index.html を作成し、リンクを追加したいのですが、 Templates/main.dwtにある記述 <a href="../ccc/ddd/index.html"> をコピーして追加して新たに <a href="../ccc/eee/index.html"> を加えてリンクしました。 すると、すべてのhtmlがTemplates/main.dwtをテンプレートとして作成されているために、リンクが上手く貼れません。 bbb/ccc/ddd/index.html と同じ階層にあるhtmlはこれでよいのですが、 bbb/ccc/index.html と同じ階層にあるhtmlはリンク先が違ってしまいます。 階層によってリンクを変える方法があるのでしょうか? とりあえず現在のところは該当フォルダ内のhtmlに対して置換を行っているのですが、回り道な作業をしているような気がしてなりません。 テンプレにはTemplates/main.dwtしかないので、そのdwt一枚で更新していたのだと思うのですが、設定で階層ごとにリンクパスを自動に変える方法などがあるのでしょうか? ご存じの方、よろしくお願いいたします。 環境: windows XP dreamweaver 8

  • ln ハードリンクをワイルドカードで複数同時作成するには

    ln ハードリンクをワイルドカードで複数同時作成する方法ってあるのでしょうか? # ln ./fileA ./*/*/ として二つ下の階層フォルダの中全てにfileAをハードリンクやシンボリックリンクを作成したいのですがうまくいきません、一個だけ作成されるのですがそのほかは勝手にディレクトリのリンクを張ろうとしてエラーがでます。 エラーはフォルダの数だけでます。 # rm ./*/*/*.jpg rmみたいに複数のファイルを同時に処理はlnではできないのでしょうか? 検索してもどうしても目的の情報が手に入りません。 よろしくお願いします。