そのため、以前はテキスト ファイル (かなり広いテーブルで 100 億 * 40 レコード) から読み取るスクリプトがありました。しかし、CentOS 5.4 の Read Builtin にメモリ リークがあることに気付きました。現在、OS をアップグレードできないため、いくつかのレコードを読み取って、現在のスクリプト内で同じスクリプトを実行し、現在のスクリプトを強制終了できるかどうかを判断します。私は 1-100000 を含む "test.txt" ファイルを持っています。そして、このファイルのすべてを別のファイル「callSelf.txt」に転送するまで、このファイルから10000回読み取りたいと思います。奇妙なことに、90000 レコードまですべてを取得できますが、その後はスクリプトが停止し、残りの 10000 行を終了しません。注: このプロセスには名前付きパイプを使用しています。
ここで何が起こっているのか誰にも分かりませんか?前もって感謝します。
PIPE="./pipe"
callSelf="./callSelf.txt"
counter=1
limit=9999
echo $$
while read LINE
do
if [ $counter -gt $limit ]; then
echo "$LINE" >> $callSelf
./callSelf.sh &
exit 0
fi
((counter++))
echo "$LINE" >> $callSelf
done <$PIPE