[root@op root]# vi rotate.sh
#!/bin/bash
DATE=`/bin/date +%y%m%d`
/bin/cp /usr/local/apache/logs/access_log /usr/local/apache/logs/access_log.$DATE
cat /dev/null > /usr/local/apache/logs/access_log
/bin/gzip /usr/local/apache/logs/access_log.$DATE
/bin/cp /usr/local/apache/logs/error_log /usr/local/apache/logs/error_log.$DATE
cat /dev/null > /usr/local/apache/logs/error_log
/bin/gzip /usr/local/apache/logs/error_log.$DATE
위의 아파치 로그 경로는 실제 아파치 로그가 있는 경로로 설정해주면 됩니다.
예를 들어 /var/log/httpd/에 로그파일을 옮겼다면 모든 경로를
/var/log/httpd로 바꿔놓으면 됩니다.
2.다음과 같이 실행 가능한 파일로 변경 합니다.
[root@op root]# chmod 755 rotate.sh
3.위의 스크립트를 clontab에 넣어서 매일 실행하게 합니다.
[root@op root]# crontab -e
0 3 * * * /root/rotate.sh
스크립트가 있는 경로를 등록해주시면 되고 매일 3시에 돌게 되어있습니다.
4.스크립트가 실행되어 로그가 일자별로 압축되어 저장된 결과입니다.
[root@op root]# cd /usr/local/apache/logs/
[root@op logs]# ls
access_log access_log.031031.gz error_log error_log.031031.gz httpd.pid
로그체크를 할때 필요한 날짜의 로그만 압축을 풀어서 확인하시면 되겠죠?
위의 스크립트를 응용하면 아파치 로그뿐만 아니라 /var/log 아래
있는 여러 로그들을 일별로 효율적으로 관리할 수 있습니다.
//----------------------------------------------------
지울거라면
cat /dev/null > access.log
해서 파일내용 지우는게 편하겠죠..
아님 rm으로 지우고 touch로 파일을 만들던가..
Posted by 홍반장