mkdirは、最近ディレクトリにアクセスしたかどうかに応じて、他のエラー(権限の拒否とファイルの存在)を表示します。

mkdirは、最近ディレクトリにアクセスしたかどうかに応じて、他のエラー(権限の拒否とファイルの存在)を表示します。

質問

まず、新しいワークステーションにログインします。

myAcct@ws5: mkdir /users/adminAcct/foo/parentDir/childDir
mkdir: cannot create directory ‘/users/adminAcct/foo/parentDir/childDir’: Permission denied

Permission deniedchildDirが存在してもエラーが発生します。

childDirにアクセスすると、このエラーが変わります。 iPythonを使用するos.path.isdir()か、シェルを使用してこれを実行できますls

myAcct@ws5: ls /users/adminAcct/foo/parentDir/childDir
file.cfg
myAcct@ws5: mkdir /users/adminAcct/foo/parentDir/childDir
mkdir: cannot create directory ‘/users/adminAcct/foo/parentDir/childDir’: File exists

私はいつも「ファイル存在」エラーを返すことができるようにしたいです。

背景

--x親ディレクトリに対するグループ権限があります/users/adminAcct/foo/parentDir。サブディレクトリが/users/adminAcct/foo/parentDir/childDir存在し、 r-xそのディレクトリに対するグループ権限があります。これはもともとPythonの問題でしたが、シェルで再作成できました。私は、NFSを介してマウントされたホームディレクトリを持つクラスタの一部であるCentOS 6ワークステーションを使用しています。この/usersディレクトリは/etc/fstabオプションで見つけてインストールされます(rw,vers=3,hard,intr,addr=<some IP addr>)。カーネルはLinux ws5.MyCompany.com 2.6.32-431.17.1.el6.x86_64 #1 SMP Wed May 7 23:32:49 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

コンテキスト

mkdirはサブディレクトリにアクセスした後もしばらくの間エラーを返しますFile exists。しばらくすると、mkdirはPermission deniedエラーを返します。これにより、これらのワークステーションで/users/adminAcct/foo/parentDir/childDirAirflow CeleryExecutorワーカーを起動して実行すると、断続的に問題が発生しますAIRFLOW_HOME。いつこの問題が再発するかを予測することはできません。

ベストアンサー1

ウォールクロックベースのタイムアウトを持つNFSクライアントキャッシュプロパティ。

これによりパフォーマンスが向上しますが、場合によっては「少し誤った」結果が表示されることがあります。クライアントの仕組みの性質は、ファイルの存在などに対する標準のUNIX保証を常に満たすわけではありません。

この問題を軽減する1つの方法は、クライアント側のキャッシュを無効にするかnoac()ディレクトリエントリのキャッシュを無効にすることです(lookupcache=none)。https://linux.die.net/man/5/nfs

おすすめ記事