無限ループシェルスクリプトのメモリ使用量

無限ループシェルスクリプトのメモリ使用量

そのため、次のようにMySQLデータベースを更新するためのシェルスクリプトがあります。

#!/bin/sh
mysql -h "localhost" -u "root" "-p********" "database" < "update.sql"
sleep 5
sh $0

5秒間スリープ状態になり、sh $0ユーザーの介入なしにスクリプトを無制限に再実行します。しかし、私の質問はメモリに関するものです。

私はシェルスクリプトに最初に触れましたが、これはループ内のメモリがゆっくりと蓄積する方法ですか?リモートサーバーはメモリを回復しますか、それともスクリプトは最終的にカットオフポイントに到達しますか? (それともメモリリークによってクラッシュが発生しますか?)

ベストアンサー1

これはループではなく、再帰的であり、時間の経過とともにメモリが直線的に増加するため、望ましくありません。

一定のメモリ使用量を持つループが必要な場合は、次のようにできます。

#!/bin/sh
while 1; do
  mysql -h "localhost" -u "root" "-p********" "database" < "update.sql"
  sleep 5
done

おすすめ記事