삼바를 통한 외부 파일 삭제에 대한 Linux 파일 시스템 반응

삼바를 통한 외부 파일 삭제에 대한 Linux 파일 시스템 반응

SAMBA의 파일을 새로 고치는 방법/시기에 대한 질문이 있습니다.

나는 비슷한 일을하고 있습니다 :

me@server:~/test/application

me@server:~/test/application$ dotnet myapp.dll

Application prints hello world

이제 폴더를 삭제하고 새 응용 프로그램과 동일한 위치에 동일한 폴더를 삽입하기 위해 (연결을 통해 이동 )을 application사용하고 있습니다.WindowsSAMBA

/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 삼바를 사용하면 상위 디렉토리의 모든 파일과 디렉토리 항목이 삭제됩니다 /test. 디렉토리의 inode는 여전히 쉘에서 사용 중이며 쉘은 이 현재 디렉토리를 하위 프로세스(예: )에 전달합니다 ls. ls이전 카탈로그 파일에서 파일을 삭제했기 때문에 파일이 올바르게 나열되지 않습니다 /test/application.

cd applicationin을 사용하면 /test새로 생성된 ./testapplication/test/application

당신은 또한 볼 수 있습니다https://stackoverflow.com/q/2028874/10622916

관련 정보