Linuxはディレクトリに関連するすべてのシンボリックリンクを見つけて削除します

Linuxはディレクトリに関連するすべてのシンボリックリンクを見つけて削除します

そこで、シンボリックリンクを多数作成して動作させようとし、さまざまな組み合わせを試してみたところ、次のようなエラーが発生しました。

ls: cannot access /etc/sv/me: Too many levels of symbolic links

/service/ または /etc/sv/ にシンボリック リンクがありません。
このエラーを解決する唯一の方法は、/service/ または /etc/sv/ に関連するすべてのシンボリック リンクを削除することですが、シンボリック リンクが表示されません。

答え1

ちょっとしたfindトリックで循環シンボリックリンクを識別することができます。これを試してください:

find /path/to/search -type l -a ! \( -xtype b -o -xtype c -o -xtype d -o -xtype p -o -xtype f -o -xtype s -o -xtype l \) 2>/dev/null

これは、シンボリックリンクをフィルタリングし、シンボリックリンクのターゲットのタイプが可能な inode タイプのいずれかであるものを除外することによって機能します。残るのは、findターゲットのタイプを決定できないものだけです。これは、循環シンボリックリンク(壊れたものは一致します-xtype l)の場合にのみ発生します。

答え2

シンボリックリンクは「遠隔アクション」を示しません。つまり、シンボリックリンクのターゲットであっても、ターゲットに直接影響を与えることはありません。

表示されているエラーは/etc、、、/etc/svまたはのいずれか/etc/sv/meがシンボリックリンクであることを示しています。どれであるかを特定して修正してください。

答え3

を実行するときは、-l大文字ではなく小文字 (ダッシュ エル) を使用するようにしてください。-Lls

関連情報