Linux ETC

Log file 주기적으로 정리하기

2015.09.08 10:37

호스트웨이 조회 수:1644

관리하는 서버에 로그가 쌓여서 서비스가 안되는 경우가 있습니다.

이 때 find 명령어를 활용해서 주기적으로 일정 기간이 지난 로그 파일은 삭제가 되도록 조치할 수 있습니다.

먼저 find 명령어의 기본 사용법은 다음과 같습니다.



$ find [경로][조건]

예) find /etc -name man-db



이 중 [조건] 항목에 mtime 옵션을 이용하면 생성된지 일정 시간이 지난 파일을 찾을 수 있습니다.

예를 들어 apache 로그 중에서 30일이 지난 로그를 찾고자 한다면,



$ find /usr/local/apache/logs -mtime +30



이와 같이 하면 됩니다. 이를 이용하여 30일이 넘은 로그 파일을 삭제하고자 하면 다음 조치를 하면 됩니다.



$ cd /usr/local/apache/logs

$ find ./*.log -mtime +30 -exec rm -f {} \;



이를 crontab에 등록하여 주기적인 정리가 가능하십니다.

만약 정리하기 원하는 로그가 따로 있다면 이를 지정해 줄수도 있습니다.



$ cd /usr/local/apache/logs

$ find ./* \( -name 'access_log*' -o -name 'error_log*' \) -mtime +30 -exec rm -f {} \;



위 예시는 30일이 지난 access_log와 error_log 만을 골라 삭제하는 조치입니다.