0

そのため、以前はテキスト ファイル (かなり広いテーブルで 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
4

1 に答える 1

0

これが役立つかどうかはわかりませんが、これはスクリプトの再現です

while read
do
  echo $REPLY >> ./call_self.txt
  if (( ++counter > 9999 ))
  then
    ./call_self.sh &
    exit
  fi
done < ./pipe
于 2013-07-30T23:45:20.300 に答える