私が使用するPythonプログラムでは、ディレクトリをnp.memmaps
活用して/tmp
大規模な配列を処理します。定期的に削除するために使用するたびにこのコードを実行してください/tmp
。rm -rf /tmp/*
しかし、最近私のコードが動作を停止し、「バスエラー(コアダンプ)」が発生しました。
端末でオートコンプリートを使用しても、結果は次のようになりますbash: cannot create temp file for here-document: No space left on device
。
df -h
私はタイピングが私に犯人を与えたと思います。
tmpfs 32G 32G 0 100% /tmp
しかし、走るのはsudo rm -rf /tmp/*
私に戻ってくるだけです。
tmpfs 32G 30G 1,9G 94% /tmp
何が起こっていて、どのように解決するのか知っていますか?
答え1
このコマンドは真実を教えてくれます。
sudo lsof -n | grep /tmp |grep deleted
Unixでは、削除されたファイルはファイルシステムにまだ存在し、そのファイルを使用しているアプリケーションはファイルを閉じるか、アプリケーションが終了するまでスペースを取ります。
したがって、削除されたファイルが開いているプロセスを見つけて再起動または終了します。
上記のファイル記述子を使用してアプリケーションを終了せずに強制的に閉じることをお勧めしますが、Linuxカーネルはrevoke()
システムコールをサポートしません。https://bugzilla.kernel.org/show_bug.cgi?id=14505