これを行うスクリプトがあります。
rm -rf "$test_dir" && sync && mkdir -p "$test_dir"
unzip -qq "$zip" -d "$test_dir"
# compile and run some stuff, diff some files...
evince "$pdf" 2>/dev/null # $pdf is a path inside the mentioned folder $test_dir
echo "[Next]..."
read
# then it goes to the next zip, and do the same again.
A.zip
zipファイルを呼び出し、次のファイル(zipファイルのリストから)を呼び出してみましょうB.zip
。- 各zipファイルには、2つのテキストファイルと1つのPDFが付属しています。
問題:
抽出フォルダがすでに削除されて再作成され、B.zipの順番になったら、テキストファイルをCat.してEvinceでPDFを開くと、B.zip
1〜2秒間正しいPDFが表示されます。
その後、evinceは文書を再読み込みしてからインポートしたPDFを表示しますA.zip
。
A.zip
行って手動でPDFをもう一度開くと、実際には中のファイルではなく入ったファイルになりますB.zip
(したがって、evinceは新しいファイルを開くだけです)。
手動でテキストファイルを再キャットすると、コンテンツは端末に登録された最後の猫の1つ(の猫B.zip
)ではなく、次のテキストファイルの内容です。A.zip
疑い:
フォルダ自体(またはそのコンテンツ)が削除された後に戻ってくるようです。
修正しようとする:
以前は「$test_dir」の内容を削除していましたが、ディレクトリ自体は削除しませんでした。問題が頻繁に発生しました。その後、フォルダを削除して再度削除することにしましたが、mkdir
問題が再び発生するようです。 。
問題が続くようにsync
コマンドをすぐに追加してみました。rm -rf
削除後も問題は解決しませんsleep
。
私が確認した内容:
私はWeb上で同様の質問をいくつか見ましたが、すべてが他のプロセス、docker、または他のプロセスに関連しています。私が使用するフォルダは私の家のディレクトリにすぎず、私のフォルダを除いて特別なプロセスは実行されません。スクリプト([更新]実際に1つありました。答えを参照してください)
確認しましたが、スクリプトの他の場所では解凍されません。
答え1
原因が見つかりました。 MegaSyncアプリケーションはバックグラウンドで実行されていますが、すべての同期中に削除したファイルを再度インポートして問題を解決しました。