シンボリックリンク

シンボリックリンク

私はUbuntu 15.10を使用しており、Linuxに初めて触れました。ウィキペディアを読んだ後一般的にシンボリックリンクとは何ですか?、Ubuntu Unix-bash端末でシンボリックリンク生成コマンドを実行した後にUbuntu学習環境を作成(および「オフ」)するときに複数回使用するシンボリックリンクの構造をよりよく理解する必要があります。

私はPHPmyadmin(PMA)サービスをインストールするたびに短い構文を実行します。実行しないと、サービスは機能しません。私が収集したものでは、次の構文はApacheをconf方向を含むいくつかのPMAファイルにリンクするシンボリックリンクを生成します。

これは私が毎回実行する構文です。

cd /etc/apache2/conf-enabled/
sudo ln -s /etc/phpmyadmin/apache.conf phpmyadmin.conf
service apache2 restart

ここで実際に行われることをよりよく理解したいと思います。たとえば、次のようになります。

  1. なぜCDナビが必要なのですか?処理するルート(コンピュータ)フォルダのファイルを指定できませんか?

  2. なぜlnの後に-sを追加するのですか?

  3. lnコマンドで両方のディレクトリに移動しましたが、どちらか一方でphpmyadmin.confが見つかりませんでした。したがって、システムはそのディレクトリがどこにあるかどうかを知ることができます(システム全体の検索がないと仮定します)。

ベストアンサー1

シンボリックリンク

自動的にファイル名の逆参照

シンボリックリンクは実際にカーネルによって特別に処理されるテキストファイルであり、その内容は他のファイル/ディレクトリへのパスです。

readlink以下を使用してシンボリックリンクファイルの内容を読み取ることができます。

ポインタ/C++ 参照のたとえ

C / C ++に慣れている場合、シンボリックリンクはほとんどのコンテキストでC ++参照または自動的に逆参照されたポインタのように機能します(すべてではありません。たとえば、ターゲットではなくシンボリックリンクで直接機能します)rmmv違いは、実際のC ++参照はメモリアドレスにバインドされ、シンボリックリンクはファイルシステムアドレスにバインドされることです。

ぶら下がっているシンボリックリンク

シンボリックリンクの内容は、有効なファイルパス参照である必要はありません。これにより、ぶら下がっているシンボリックリンク(たとえば、ぶら下がったポインタやぶら下げを参照)があります。

相対シンボリックリンク

シンボリックリンクのファイルパスが絶対パス(で始まる/)ではない場合、相対ファイルパスはシンボリックリンクの場所に基づいて検証されます(非記号リンクコンテキストでは、相対パスはに基づいて検証されます$PWD)。


-sフラグとハードリンク

フラグ-sは「作成するSln「ymlinks」を作成することもできます。ハードリンク。ハードリンクは、ファイルシステムの実装に近い異なるレベルで動作します(したがって、異なるファイルシステム間でハードリンクを作成することはできません)。

Unixファイルシステムはファイル名(/ディレクトリ名)とファイルの内容(ディレクトリの内容)を別々に保存し、名前はその内容に対して自動的に逆参照される参照数ポインタです。ハードリンクは、参照数を増やしながら同じコンテンツに対して異なる名前を作成します。

$ echo 'the contents' > f1
$ ls -l f1 
  * 1 * #the 2nd column is the reference count
$ ln f1 f2 #create another name for the contents of f1
$ ls -l f1
   * 2 * #the contents of f1 has two named references to it
$ rm f1  #the contents of f1 lives on (in f2) #
         # because rm only removes the reference to the data block
         #and this isn't the only reference
         #(rm ivokes a system call literally named `unlink`)

ディレクトリハードリンク

ディレクトリハードリンクを作成することはできませんが、.暗黙..的に作成されます。したがって、ディレクトリ内のハードリンクの数は、そのディレクトリにあるサブディレクトリ(それぞれ..親ディレクトリへのハードリンクがある)の数を反映します。


シンボリックリンクとハードリンク - 一般的な概要:

echo 'file data' > fileName 
ln fileName fileName2 #hardlink
ln -s "$PWD/fileName" absoluteSymlinkTofileName 
ln -s fileName relativeSymlinkTofileName 

同じ物理ファイルシステムにln別の名前を作成しますfile datalnファイルシステムのクロスは失敗します)。fileNameそのうちの1つを削除または削除でき、fileName21つ以上の名前が残っている限り存在し続けますfile data

absoluteSymlikTofileName名前の自動逆参照ですfileName。パスが何かで解決される限り、シンボリックリンクは有効です。ターゲットを削除すると、シンボリックリンクがダングリング状態になります。これは絶対的なシンボリックリンクなので、妥当性を変更することなく他の場所に移動できます。

relativeSymlinkToFileNamefileNameそのディレクトリと同じディレクトリから呼び出される名前を指しますrelativeSymlinkToFileName。名前付きファイル(またはディレクトリ)がある別のディレクトリに移動すると、fileNameそのディレクトリを指します。

おすすめ記事