VIM、Linux VFSキャッシュ、ecryptfs、および/またはファイルシステムに関連しているために発生すると思われる奇妙な問題が発生しました。
- VIMでファイルを開き、変更して保存します。
- ファイルにアクセスしようとしています。
予想される動作
:w
レポートファイルが作成されたら、ファイルにアクセスできる必要があります。
実際の行動
ファイルが存在しません。
しばらく(通常1秒未満)待つと、ファイルが表示されます。
これは、Pythonコードとレガシーpyc
ファイルを扱うときに特に問題になります。新しいpy
ファイルがまだ準備されていないため、古いコードを実行することがよくあります。最近export PYTHONDONTWRITEBYTECODE=1
コードを追加した.bashrc
ため、古いコードを実行するのではなく意味のあるエラーメッセージが表示されます。私が変更したファイルは短時間で失われるため、自動リロードコード(Djangoのコードなど)が5〜10回ごとに再ロードされないため、まだ厄介です。ファイルがpyc
適切な場所にあると、自動リローダーは時々古いファイルをロードしますが、ファイルが変更されたことを確認pyc
できず、別の再ロードをトリガーします。py
システムの詳細と構成
私のコンピュータには十分なRAM(32GiB)とSSDがあり、ほとんどアイドル状態です。したがって、遅いI / Oがこの問題の原因であるとは思わない。ファイルは非常に小さく(1KiB未満)、空のファイルでもこの現象が発生します。暗号化にecryptfsを使用しているので、$HOME
これが問題の一部である可能性があります。ファイルシステムを/tmp
使用してインストールすると、この問題は再現できません。tmpfs
VIM設定
ファイルが移動され、新しいファイルに置き換えられたのは、VIM設定によるものです。
set backup
set backupskip=
set backupdir=$HOME/.vimbackup
set writebackup
new
VIMは、ファイルが作成されたことを報告したらすぐにファイルにアクセスできるようにしたいです。私は遅延書き込みのヒントがあるかどうかVIM文書を確認しましたが、何も見つかりませんでした。シェルコマンドを使用してそれを再現することはできないため、VIMmv
は他の操作を実行しているようcp
ですrm
。
また何がこの問題を引き起こす可能性がありますか?この問題をどのように解決できますか?
ベストアンサー1
これはバグですが、Aaronがリンクしたバグとは何の関係もありません。現時点では再現できないので、ここに新しいバグを提出することができます。https://bugs.launchpad.net/ecryptfs/+filebug
上記の説明をコピーして貼り付けることができますが、使用しているLinuxディストリビューションとカーネルバージョンについても詳しく知っておく必要があります。ありがとうございます!