私のサーバーには、次のディレクトリ構造があります。
/myproject/code
私は通常、サーバーにSSHで接続し、そのディレクトリに「待機」します。
root@machine:/myproject/code#
新しいバージョンのコードを配布すると、コードディレクトリが削除され、次の内容が残ります。
root@machine:/myproject/code# ./run
-bash: ./run: No such file or directory
私が見つけた唯一の解決策は、CDを取り出して元に戻すことです。
root@machine:/myproject/code# cd ../code
root@machine:/myproject/code# ./run
Running...
これを避けることはできますか?これは少し奇妙な行動です。なぜこれが起こるのかについて良い説明があれば、とても感謝します。
ベストアンサー1
私にとって「cd../code」は愚かです。なぜこれが本当ではないのか聞きたいです。
ファイルとディレクトリは本質的にファイルシステムアノード、名前ではなく - これはファイルシステムの種類に固有の実装の詳細かもしれませんが、すべての外部システムに対応するので、ここでは使い続けます。
いつ新しいディレクトリがcode
作成されたら、そのディレクトリを持つ新しいinodeに関連付けられます。以前に削除されたファイルとディレクトリの履歴はアーカイブされないため、システムは一度占有されたinodeを調べることができず、内容を再度同じにするために再配置することもできません。これらのシステムはすぐに機能しなくなり、いかなる場合でも再びそこに戻るという保証はありません。これはやや望ましくない。これは、ディレクトリが作成されると、誤って(現在使用されていない)inodeが他の必要な場所に終わる可能性があることを意味するためです。
この最後の可能性が存在するか、現在の作業ディレクトリに現在割り当てられている削除済みディレクトリのinodeが追跡され、その期間に何も割り当てられていないかどうかはわかりません。