Linux上のシンボリックリンクは素晴らしい機能ですが、それらは壊れていて、何も指していないことがあります。壊れたシンボリックリンクを見つけ、それらを確認し、必要な場合はシステムから削除する方法があります。
シンボリックリンク101.
シンボリックリンク 「ソフトリンク」と「シンボリックリンク」とも呼ばれ、ファイルやディレクトリを指すことができるショートカットの形式です。シンボリックリンクは、[ファイルマネージャ]ウィンドウで通常のファイルまたはディレクトリのように見えます。また、端末ウィンドウ内のファイル一覧のエントリとしても表示されます。シンボリックリンクポイントがファイルシステムツリー内の任意の場所にすることができるファイルまたはディレクトリ。
たとえば、「dave-link」という名前の「Dave-Link」という名前のシンボリックがあるとしましょう。ファイルシステムツリーの他の場所にあるファイルを指すファイルを指しています。シンボリックリンクで使用するコマンドは、それがポイントするファイルに自動的に適用されます。あなたが使いようとするならば
猫
また
以下
シンボリックリンクでは、実際には「text-file.txt」ファイルの内容が表示されます。
標準のLinuxインストールには多くのシンボリックリンクが含まれています。あなたが自分自身を作成しなくても、オペレーティングシステムはそれらを使用します。アプリケーションインストールルーチンは、実行可能ファイルファイルを指すようにシンボリックリンクを使用します。ソフトウェアが更新されると、バイナリファイルは新しいバージョンに置き換えられ、新しいファイルの名前が古いものと同じである限り、すべてのシンボリックリンクは以前と同じように機能します。
私達は簡単にいくつかのシンボリックリンクを使って見ることができます
LS.
ルートディレクトリに。いくつかのエントリは私たちの異なる色に表示されます
Ubuntu 20.10
テストマシン、彼らは明るい青に表示されています。
次のように入力します。
LS /
私達はそれを使ってより深い外観を取ります
に
(ロングリスト)オプション。次のコマンドを入力して、すべての "lib"エントリと単一の "bin"エントリを調べます。
LS -L / lib * / bin
各行の開始時には、項目がシンボリックリンクであることを示す「L」です。 " - >"の後のテキストシンボリックリンクが指しているものに表示されます。この例では、ターゲットはすべてディレクトリです。
権限は、所有者、グループなどの読み取り、書き込み、および実行としてリストされています。これらはデフォルトの偽のエントリです。それらはシンボリックリンクポイントがあるオブジェクトに対する実際の権限を反映しません。これは、優先され、ファイルシステムによって尊重されているターゲットファイルまたはディレクトリに対する権限です。
壊れたシンビリンク
ITポイントが削除されたファイルが別の場所に削除されたときにシンボリックリンクが壊れている(またはダングリングを残します)。アプリケーションのアンインストールルーチンが正しく機能しないか、完了する前に中断されている場合は、Symlinksが壊れた状態で残される可能性があります。
シンボリックリンクを知らずに誰かがファイルを手動で削除した場合、それらのシンボリックリンクは機能しなくなります。彼らはブルドーズされている町を指している道路標識のようになるでしょう。
現在のディレクトリの「hello」というシンボリックリンクを使用してこの動作を簡単に確認できます。以下のように入力します
LS.
それを見るために:
LS -L
「bin」というディレクトリに "htg"というプログラムを指します。シンボリックリンクを「実行」した場合は、私たちのためのプログラムを実行します。
/こんにちは
これがプログラムを直接実行して起こっているのかどうかを確認できるようになりました。
../ BIN / HTG
予想どおり、私たちは同じ回答を得ます。プログラムファイルを削除しましょう。
RM ../bin/htg
現在、シンボリックリンクを見ると、Linuxが壊れていることを知っているので赤に表示されているのが見えます。また、それが慣れているものでも私たちに言うので、ファイルを交換したり、プログラムを再コンパイルしたり、シンボリックを修復するために必要なものは何でもしたりできます。
シンボリックリンクを実行しようとすると、シンボリックリンクポイントがどのプログラムの名前ではなくシンボリックリンク名を参照します。
次のように入力します。
/こんにちは
壊れたシンビリンクを見つける
最新のバージョンのほとんど
探す
haveう
Xtype.
(拡張型)オプション、
どのようなシンボリックリンクの検索を簡素化します
。私たちはそれを使います
l
flagう
Xtype.
リンクを検索するように指示する。 using
探す
と
Xtype.
以下のように、他のいずれも
タイプ
フラグ、部隊
Xtype.
壊れたリンクを返す
見つけなさい。 -xtype l
テストホームディレクトリでコマンドを実行すると、かなりの数の壊れたシンボリックリンクがあります。検索はデフォルトで再帰的であるため、すべてのサブディレクトリを自動的に検索します。
私たちが予想されるように、私たちが目的で壊れた「こんにちは」シンボリックリンクがリストされています。他のシンボイルの1つはFirefoxブラウザに関連しており、残りはスナップに関連付けられています。
出力を通してパイプした場合
トイレ
とともに
に
(行)オプションでは、破線のシンボリックリンクをカウントするのと同じ行を数えることができます。
次のように入力します。
見つけなさい。 -xtype l | WC -L
私たちは何も指していない24個の壊れたシンボリックリンクを持っていることを私たちは知らされています。
検索、レビュー、そして削除します
あなたが急いで壊れたシンボリックリンクを急いで削除する前に、の結果を見てください
探す
指図。破損したシンボリックリンクのいずれにも有効な理由があるかどうかを確認してください。
時々、シンボリックリンクはターゲットファイルではなく問題になる可能性があります。シンボリックリンクが誤って作成された場合、それは何もないが、実際のターゲットが存在する可能性があります。シンボリックリンクを再作成すると、その場合の修正が行われます。
明らかに壊れたシンボリックリンクが、ファイルロックまたは他のGO / NO GOインジケータのインジケータなど、他のものとして使用されている可能性もあります。 Firefoxはこれを行います。それが私たちのリストの最初のシンボリックリンクのものです。しかし、Firefoxはテストマシンでは使用されていませんので、削除するのは安全です。
ターゲットが定期的にのみ存在する可能性もあり、これがその特定のソフトウェアの予想される(および望ましい)動作です。ターゲットファイルが別のマシンまたはクラウドからコピーされる可能性があり、その機能を実行し、次に次のサイクルで別のプログラムに置き換えられます。
破損したシンボリックリンクは、失敗したソフトウェアのインストールの症状でもあります。その場合、シンボリックリンクを削除する代わりに、手動で修正するか、インストールを繰り返す必要があります。
壊れたリンクを固定したら、保持する必要がある場合は、検索を実行するためにコマンドを繰り返します。固定シンボリックリンクは検索結果から欠けているはずです。
安全のために、シンボリックの削除をあなた自身のディレクトリに制限するのが最善です。これらのコマンドをrootとして実行するのには、またはシステムディレクトリでは非常に携わっています。
壊れたシンビリンクの削除
NS
- exec.
(実行)オプションはコマンドを実行します
探す
の検索結果。私たちは使い方です
rm.
壊れた各シンボリックリンクを削除するには。 NS
{}
それぞれが発見されるように、文字列はそれぞれの壊れたシンボリックリンクの名前に置き換えられます。
探す
。
セミコロンを使用する必要があります(
;
)欲しいコマンドのリストを終了する
- exec.
走る。バックスラッシュを使用します
\
)セミコロンを「脱出」するので、その一部として扱われます。
探す
何かではなくコマンド
バッシュ
行動する必要があります。
次のように入力します。
見つけなさい。 -xtype l -exec rm {} \;
何も起こったことを示しながらコマンドプロンプトに戻ります。壊れたリンクが削除されたことを確認するために、次のようにそれらを探すためのコマンドを繰り返します。
見つけなさい。 -xtype l
一致する結果はありません。つまり、破線のシンボリックリンクが削除されました。
最初にレビューすることを忘れないでください
繰り返しになりますが、コマンドを実行して削除する前に、常にシンボリックリンクのリストを確認してください。適切なディレクトリで削除するには、コマンドを実行することで、わからないことを確認することはできません。
たとえば、上記では、 ".snap"ディレクトリにコマンドを実行してから、孤独な "Hello"シンボリックリンクを手動で削除できます。これにより、Firefox Lock Symlinkをアンタッチしました。