コマンドを使用して多数のファイル(数百万個)を削除しようとしますが、端末に find . -name "file*" -delete
オンラインKilled
で検索した結果、dmesgが表示されます。
Out of memory: Kill process 25284 (find) score 691 or sacrifice child
Killed process 25284, UID 0, (find) total-vm:11666436kB, anon-rss:3229204kB, file-rss:620kB
/proc/sys/vm/overcommit_memory
図に示すように、Overuseが0に設定されているのを見ると、これはOOMキラーによるものです。この問題を回避する方法を知りたいです。このファイルを手動で削除することはできません。
答え1
プロセスはメモリを過度に使用せず、実際に消費するメモリはほぼ3GB(anon-rss)なので、OOMは正当です。
正規表現の削除コマンドを試してください。同じ振る舞いが表示される場合は、おそらくここにあるファイルの数が原因です。https://superuser.com/questions/1174259/high-memory-usage-of-the-find-command削除するすべてのファイルを一覧表示し、Shell / Perlスクリプトを介して1つずつ削除を実行することをお勧めします。