쉘 프로그래밍 awk를 이용해서 만들고 있어요.
글쓴이: saladin20 / 작성시간: 금, 2008/10/03 - 7:05오후
페도라 리눅스 5사용중입니다.
커널은 2.6이구요
쉘 프로그래밍 중인데요.
특정 용량이상의 로그파일을 삭제후 실행을 해야됩니다.
즉 예를 들어서.
aa.php란 프로그램을 실행할때 aa.vdb란 파일로 실행기록이 남거든요.
이걸 주기적으로 정리해줘야되는데..
저 파일이 100메가 이상이면 삭제해줘서 새롭게 생성이 되도록 해야됩니다.
vdb파일은 aa.php를 실행시 자동생성됩니다.
아직 이쪽은 초보라서 사이즈 추출까지는 어떻게 만들었는데요.
ls -l | awk '{if ($5 >= 10000000) print$9}'>ll1
cat ll1 | awk -F. '{print$1}'>ll2
이렇게 해서 aa란 파일 명까지는 추출했는데요=_=
저기서 $1에 aa란 값이 추출되거든요. 그럼 추출된값을 변수로 받아서 $1.php 란 파일을 한번 실행하고 난후
$1.vbd란 파일을 삭제하고 싶은데..
이걸 어떻게 하는지 모르겠네요..
이런식으로는 안되더라구요...
cat ll2 | awk '{$1".php"}'
라고 실행시켜 보니 안되더라구요....=_=
글고 system이라는 내장함수로 유닉스 내부명령어를 awk로 실행할수 있다고 하는데
이건 리눅스에서 적용하려면 형식이 어떻게 되는지....
awk '{system(\rm $1.vdb}' 이런식인가요?
ㅜㅜ책을 찾아봐도 옵션언급이 없어서 어떻게 찾아야될지 난감해서.
도와주세요!
Forums:
shell script
심심하실때 읽어보세요. 많은 것들을 할 수 있습니다.
PDF문서 http://www.tldp.org/LDP/abs/abs-guide.pdf
find /tmp -size +100M -exec ls {} \;
목록 확인하시고
find /tmp -size +100M -exec rm -rf {} \;
이렇게 하면 /tmp에 100M이상 파일 삭제합니다
ls -al $( ls -l | awk '{ if ($5 >= 10000000) print $8 }' )
확인하시고
rm -rf $( ls -l | awk '{ if ($5 >= 10000000) print $8 }' )
삭제 됩니다.
php에 system() 함수가 있다면
없음
감사합니다.
답글에 감사드립니다.!!
로그파일을 삭제하는 이유는 리눅스 시스템 로그가 아닌
aa.php프로그램을 자체적으로 만든것에 대한 로그이기 때문에
로그가 많아지면 프로그램 실행이 좀 버벅거리는듯 해서 그런답니다.^^
내일 한번 더 봐야겠네요.
이것때문에 일주일을 끙끙했는데 좀더 공부해야겠습니다.
정말 감사드립니다.(__)
로그파일만
로그파일만 전문적으로 관리해주는 놈이 있습니다.
주기적으로 할 수도 있고,
크기를 지정해놓고 감시할 수도 있고,
오래된 놈을 몇개나 백업할지 정해 줄 수도 있고,
백업한 놈을 압축해서 보관할 수도 있고.
침이 줄줄 흐른다면... man logrotate 해보세요.
OTL
댓글 달기