複数のフォルダのサイズを取得する - プロセスのサーバーリソース消費を計算する方法は?

複数のフォルダのサイズを取得する - プロセスのサーバーリソース消費を計算する方法は?

複数のフォルダ(サブフォルダと複数のファイルを含む)のサイズを取得し、データベースを更新してサーバーへのユーザーのアップロードを制限する必要があります。このプロセスは定期的に、できるだけ短時間で完了する必要があります。

このプロセスを30分ごとに実行するようにcrontabを作成しました。このプロセスがサーバーでどのくらいのリソースを使用しているかわかりません。私は1GBのRAM、1 CPU、Debian 8、Apache2、MariaDBを備えた素朴なVPSを持っています。

私の質問は:使用する時間間隔を推定するために、このプロセスのサーバーリソース消費をどのように計算できますか?

ちなみに、これはフォルダ(およびサブフォルダ)のサイズを取得するために使用するPHP関数です。

function dirSize($dir) {
    $dir = strval($dir);
    if (!is_dir($dir)) return 0;
    $cmd = popen("ls -ltrR {$dir} |awk '{print \$5}'|awk 'BEGIN{sum=0} {sum=sum+\$1} END {print sum}'", 'r');
    $size = intval(fgets($cmd, 80));
    pclose($cmd);
    return $size;
}

ありがとうございます!

編集する:

良い提案を受けました。@meuhファイルがアップロードまたは削除されるたびに、データベースを更新して個々のファイルサイズを増減します。これがリソース消費の面でより良いアプローチであるかどうか疑問に思います。ありがとうございます!

ベストアンサー1

du次のコマンドを試すことができます。

du - ファイル空間使用量の見積もり

例:

$ du -d 0 -h Documents/
3.2M    Documents/

このduコマンドには多くのオプションがあり、すべてのディレクトリを一度に渡して合計ディスク使用量を取得することもできます(man du詳細情報を参照)。

(実質的な方法で)所要時間を見つけるには、time以下を前に付けることができます。

$ time du -d 0 -h Documents/
3.2M    Documents/

real    0m0.004s
user    0m0.002s
sys 0m0.001s

この時間は、ディレクトリ内のファイルとフォルダの数によって異なります。

おすすめ記事