ln を使用するとシンボリックリンクが生成されますが、ループが生成されます。

ln を使用するとシンボリックリンクが生成されますが、ループが生成されます。

私のソースからシンボリックリンクを作成したいと思います。

/nfs/www/example.com/sourcefolder

この目的地まで:

/var/www/example.com/destinationfolder

だから、次のコマンドを実行します。

ln -s /nfs/www/example.com/sourcefolder /var/www/example.com/destinationfolder

私の質問:ターゲットフォルダでコマンドを2回実行するとループが発生します。

/var/www/example.com/destinationfolder/sourcefolder/......./sourcefolder

私も次のことをテストしました。

ln -s /dev/shm/ $APACHEHOME/tmp

だからループフォルダ"shm"を持つようになります。問題は、Webアプリケーションがフォルダ名を「tmp」として指定する必要がありますが、メモリにマップする必要があることです。

私は何が間違っていましたか?

ベストアンサー1

より詳細な出力が必要な場合は、-vを試してください。

[root@centos7 ~]# mkdir /tmp/test/sourcefolder
[root@centos7 ~]# ls -l /tmp/test
total 0
drwxr-xr-x. 2 root root 6 Feb 21 11:40 sourcefolder
[root@centos7 ~]# ln -v -s /tmp/test/sourcefolder /tmp/test/destinationfolder
‘/tmp/test/destinationfolder’ -> ‘/tmp/test/sourcefolder’
[root@centos7 ~]# ls -l /tmp/test
total 0
lrwxrwxrwx. 1 root root 22 Feb 21 11:55 destinationfolder -> /tmp/test/sourcefolder
drwxr-xr-x. 2 root root  6 Feb 21 11:40 sourcefolder

リンクループは ln の動作によって発生します。

[root@centos7 ~]# ln -v -s /tmp/test/sourcefolder /tmp/test/destinationfolder
‘/tmp/test/destinationfolder/sourcefolder’ -> ‘/tmp/test/sourcefolder’
[root@centos7 ~]# ls -l /tmp/test
total 0
lrwxrwxrwx. 1 root root 22 Feb 21 11:55 destinationfolder -> /tmp/test/sourcefolder
drwxr-xr-x. 2 root root 25 Feb 21 11:57 sourcefolder
[root@centos7 ~]# ls -l /tmp/test/sourcefolder
total 0
lrwxrwxrwx. 1 root root 22 Feb 21 11:57 sourcefolder -> /tmp/test/sourcefolder

すでに存在するシンボリックリンクの代わりに、ターゲットフォルダをディレクトリとして解釈してください。

-Tを使用すると、これを防ぐことができます。

[root@centos7 ~]# ln -v -T -s /tmp/test/sourcefolder /tmp/test/destinationfolder
‘/tmp/test/destinationfolder’ -> ‘/tmp/test/sourcefolder’
[root@centos7 ~]# ln -v -T -s /tmp/test/sourcefolder /tmp/test/destinationfolder
ln: failed to create symbolic link ‘/tmp/test/destinationfolder’: File exists

おすすめ記事