2010-11-25 4 views
0

나는 여러 Windows 네트워크 공유 드라이브 사용법을 모니터하는 펄 스크립트를 가지고있다. 현재 cygwin df 명령을 사용하여 여러 네트워크 드라이브의 여유 공간을 모니터합니다. 개별 드라이브 사용법도 추가하고 싶습니다. 내가 사용할 때cygwin perl에서 디렉토리 (및 내용) 크기를 빠르게 얻는 방법

du -s | grep total 

명령은 영원히 필요합니다. 서버의 단일 드라이브에서 공유되는 여러 네트워크 드라이브가 있기 때문에 공유 드라이브 사용법을 살펴볼 필요가 있습니다. 따라서 하나의 네트워크 드라이브를 채우면 모든 정보가 채워집니다 (그렇습니다. 최선의 해결책이 아니라 선택입니다).

그래서, 나는 영원히 받아들이지 않는 폴더 사용법을 더 빨리 얻을 수 있는지 알고 싶습니다.

답변

1

1) 문제는 아마도 네트워크 드라이브 - 로컬 du이 대부분의 경우 빠르다는 사실에 있습니다. 디스크가 들어있는 정확한 서버에서 du을하고 있습니까? 그렇지 않은 경우 다른 각도에서 문제에 접근합니다. 로컬 du 요약을 계산하는 드라이브를 호스팅하는 모든 서버에서 에이전트를 실행 한 다음 합계를 중앙 프로세스 (IPC 또는 도대체 중 하나, 파일에 보고서 작성)로보고합니다 동일한 공유 파일 시스템에서).

2) 드라이브 중 나머지 공간보다 평균적으로 더 많은 공간을 사용하는 경우 "가장 큰"공간 이외의 공간에서 du을 실행하여 최적화 한 다음 가장 큰 공간을 df 결과에서 다른 사람의 합계를 뺍니다.

3) 또한, 솔직히 말하면 디자인 측면에서 볼 때 차선책으로 보입니다. 귀하가 선택하지 않았다고 말했을 때 질문을 게시하는 것이 좋습니다. 당신이 주어진 매개 변수 내에서 디자인을 향상시킬 수있는 방법 (서버 폴트 웹 사이트, SO가 아님)

+0

그래, 차선책이라고 할 수 있습니다. 내가 다른 방법으로 할 수있는 옵션이 있는지, 아마도 서버 자체에서 뭔가를 구현하는 방법을 살펴 보겠습니다. – mor22

1

du -s은 모든 디렉토리와 파일의 크기를 재귀 적으로 쿼리하여 작동합니다. 파일 시스템 구현에서이 총 값을 어딘가에 저장하지 않으면 디스크 사용을 확인할 수있는 유일한 방법입니다. 따라서 사용중인 파일 시스템과 드라이버를 조사하고이 데이터를 직접 쿼리 할 수있는 방법이 있는지 확인해야합니다. 그렇지 않으면, 당신은 아마 SOL이고 du을 실행하는 데 걸린 시간을 빨려 야합니다.

관련 문제