SAMBAのファイルを更新する方法/タイミングについて質問があります。
私は同様のことをしています:
me@server:~/test/application
me@server:~/test/application$ dotnet myapp.dll
Application prints hello world
フォルダを削除し、新しいアプリケーションと同じ場所に同じフォルダを挿入するために(接続を介して移動)をapplication
使用しています。Windows
SAMBA
/test/application/
それでは、同じパスに残っているLinuxターミナル(SSH経由で接続)に戻って、次のようにしたいと思います。
dotnet myapp.dll
結果:
System.IO.FileNotFoundException: Unable to find the specified file.
at Interop.Sys.GetCwdHelper(Byte* ptr, Int32 bufferSize)
at Interop.Sys.GetCwd()
at System.Environment.get_CurrentDirectory()
at System.IO.Directory.GetCurrentDirectory()
at Microsoft.DotNet.Cli.Utils.CommandResolver.TryResolveCommandSpec(ICommandResolverPolicy commandResolverPolicy, String commandName, IEnumerable`1 args, NuGetFramework framework, String configuration, String outputPath, String applicationName)
at Microsoft.DotNet.Cli.Utils.Command.Create(ICommandResolverPolicy commandResolverPolicy, String commandName, IEnumerable`1 args, NuGetFramework framework, String configuration, String outputPath, String applicationName)
at Microsoft.DotNet.Cli.Utils.Command.Create(String commandName, IEnumerable`1 args, NuGetFramework framework, String configuration, String outputPath, String applicationName)
at Microsoft.DotNet.Cli.Program.ProcessArgs(String[] args, ITelemetry telemetryClient)
at Microsoft.DotNet.Cli.Program.Main(String[] args)
応募書に問題があるようですが、
リストファイルを使用すると、ls
何も表示されません。フォルダが空のようなものです。
しかし、仕事を終えた後、cd ..
すべてがcd application
うまくいきます。 (lsは私のファイルをリストし、アプリケーションはうまく動作します。)
基本的に「フォルダの更新」が必要ですが、なぜですか?
友人は、「以前のディスクInodeがロードされた古いフォルダセッション」のようなものがあると言いました。
答え1
LinuxまたはUnixでは、プロセスによってまだ開いているファイルまたはディレクトリを削除できます。
あなたの場合、シェルはまだ開いている/test/application
ディレクトリが現在のディレクトリにあります。
application
Sambaを使用すると、親ディレクトリ内のすべてのファイルとディレクトリエントリが削除されます/test
。ディレクトリのinodeはまだシェルで使用されており、シェルはこの現在のディレクトリを子プロセス(たとえば)に渡しますls
。ls
以前のカタログファイルからファイルを削除したため、ファイルが正しく一覧表示されません/test/application
。
cd application
inを使用すると、/test
新しく作成された 。/test
application
/test/application
また、見ることができますhttps://stackoverflow.com/q/2028874/10622916