![여러 폴더의 크기 가져오기 - 프로세스의 서버 리소스 소비를 계산하는 방법은 무엇입니까?](https://linux55.com/image/121057/%EC%97%AC%EB%9F%AC%20%ED%8F%B4%EB%8D%94%EC%9D%98%20%ED%81%AC%EA%B8%B0%20%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0%20-%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%9D%98%20%EC%84%9C%EB%B2%84%20%EB%A6%AC%EC%86%8C%EC%8A%A4%20%EC%86%8C%EB%B9%84%EB%A5%BC%20%EA%B3%84%EC%82%B0%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
여러 폴더(하위 폴더 및 여러 파일 포함)의 크기를 가져오고 데이터베이스를 업데이트하여 내 서버에 대한 사용자 업로드를 제한해야 합니다. 이 프로세스는 정기적으로, 가능한 한 짧은 시간 내에 완료되어야 합니다.
이 프로세스를 30분마다 실행하도록 crontab을 생성했는데, 이 간격을 10분 이하로 줄일 수 있으면 참 좋겠습니다. 이 프로세스가 서버에서 얼마나 많은 리소스를 사용하는지 모르겠습니다. 저는 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
이 시간은 디렉터리의 파일 및 폴더 수에 따라 달라질 수 있습니다.