Articles
@thrig 連続フォークを節約します、'プロセスの制限にはあまり役立ちません。
アカウントに厳しい制限がありますか?オペレーティングシステムとディストリビューションシステムは実行されていますか?他の多くのプロセスを実行していますか?
はい、本番環境です。システム上で実行されているプロセスは非常に多くあります。
検索:フォークできません:メモリを割り当てることができません
On 11月 18, 2020 by admin非常に多くのファイルを含むディレクトリから一度に1つのファイルを削除したいので、1つを削除します一度にファイルします。読み取りが多すぎて引数が多すぎて失敗しないようにするためです。
find ./Backup/ -name "*.csv" -maxdepth 1 -exec rm {} \; find: warning: you have specified the -maxdepth option after a non-option argument -name, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments. find: cannot fork: Cannot allocate memory
子ディレクトリから再帰的に削除したくないので-maxdepth1。ヘルプや提案はありますか?
コメント
。'を最初。
-exec ... '{}' \+
形式のfind
は、find
をエミュレートするため、フォークを節約できます。 find
の(最新の)バージョンのdiv id = “8fe69e5fd7″> 。
回答
cannot fork
メッセージが表示される場合があります。 tmpfs
ファイルシステム(おそらく)/tmp
にマウントされていると、カーネルが新しいプロセスを作成するために必要なスペースがない可能性があります。
df -h /tmp
を使用して、/tmp
にまだ余裕があるかどうかを確認します。いっぱいになっている場合は、最初に/tmp
をクリーンアップしてみてください。
コメント
- スワップとtmpfsはクリーンアップされません両方とも使用可能なメモリのサブセットであるという点を除いて、関連しています。新しいプロセスを作成するために、
/tmp
の部屋は必要ありません。メモリ内のスペースはありますが、その量が非常に少ないため、/tmp
で物を削除してもフォークが可能になる可能性はほとんどありません。 - / tmpは近くにありません。
- @ Gilles、Solarisの場合
/tmp
は実際のtmpfs
であり、完全に(+ 100%)使用すると、unable to fork; not enough space
メッセージが表示されます。 OPが受け取るメッセージはcannot fork; unable to allocate memory
です。 Solarisソリューションを提案し、最初にOSを要求しなかったことをお詫びします。 OPは、ulimit -a
とulimit -aH
の値をチェックして、このプロセス中にヒットする可能性のあるメモリ制限があるかどうかを確認する場合があります。/etc/security/limits.conf
を調べて、いくつかの制限が設定されているかどうかを確認することも価値があります。 - / tmpの空き容量が多いという同じ問題が発生しました。ただし、スワップはアクティブ化されていません。 [code] swapon / dev / sdXn [/ code]は問題を解決しました。
-exec rm {} \;
ではなく-delete
で解決する必要があります。それ以外の場合は、移動してください。-name
の前のdivid = “72e8038d2e”>