Unix ( IAX ) 시스템 사용량 체크 du 쉘 스크립트 구현 도움 요청합니다 ;;;
#!/bin/ksh
# du 구현 script tree 구조 하위 구조 디렉터리 함께 구현
DEPTH=0 // 깊이
CDDIR="" // 디렉 옮기기
function dir {
NAME=`echo $1 | awk -F / '{print $NF}'` // 디렉 이름
CDDIR=`ls -l $1 | grep ^d | awk '{print $NF}'` // 디렉 옮기기
if [[ $CDDIR = "" ]] //하위 디렉이 있다면 ?
then
(( COUNT=$DEPTH ))
SIZE=`du -ks $1 | awk '{print $1}'` // 해당 디렉 사용량
while [[ $COUNT -ne 0 ]] // 현재 디렉, 하위 디렉을 구분해주기 위해.
do
(( COUNT=$COUNT-1 ))
print " "
done
printf "---%s %d\n" $NAME $SIZE
else
(( COUNT=$DEPTH ))
SIZE=`du -ks $1 | awk '{print $1}'`
while [[ $COUNT -ne 0 ]]
do
(( COUNT=COUNT-1 ))
print " "
done
printf "---%s %d\n" $NAME $SIZE
for i in $CDDIR
do
if [[ $2 -gt $DEPTH ]]
then
(( DEPTH=$DEPTH+1 ))
dir $1/$i $2 // 하위로 들어가기
fi
done
fi
(( DEPTH=$DEPTH-1 )) //하위로 나오기
}
dir $1 $2 이렇게 만들었는데
음 실행을 하면 ex) #ksh a.sh / 를 하면 / 의 사용량이 나옵니다 문젠
#ksh a.sh / 1 ( 또는 2 ) 를 하면 순간적으로
---40343 342 ( 루트 이름과 용량은 정상 출력 )
// 저거 출력되고 몇초 안되서 그냥 다 흰 화면
//무한루프인듯 함 while 구문을 봤지만 몰겠
//바라는 출력은
ex) #ksh a.sh / 1
---3043 3048
---var 40845
---etc 3085
---home 3094
ex2) #ksh a.sh / 2
---3043 3048
---var 40845
---log 40943
---log2 09343
---home 49434
---guest 4943
---user1 3934
이런 식임 즉 하위로 갈수록 공간 넣으면서 인데..
대리님이 알려주셨는데
패기있게 소스 이해 다 한다음 지웠다가 다시 만들려는데 막혔네요
여러분의 도움이 필요합니다 ;
질문자입니다
휴.. 이 글 올리고 수정하다가 해결 됬네요
댓글 달기