티스토리 뷰

IT/server

[Linux] 로그 관리 (gzip, crontab)

mindeulion 2025. 1. 13. 19:00

로그 파일은 특정 프로그램이 실행되면서 발생한 오류나 기록들이 저장되어있는 파일인데요.

로그파일을 통해 히스토리 파악, 오류파악 등이 가능하기 때문에 가능하면 보관을 하는 편인데요.

대부분 텍스트 파일 형태로 보관을 하지만, 별도 요청이 없는 한 저장만 하고 있죠.

 

AWS의 S3 같은 경우는 스토리지 비용이 싸니 별 문제는 안되겠지만, 일반 서버나 EC2 인스턴스 환경에서 서버상에 보관할때는 용량이 조금 부담스러울 수 있는데요.

# gzip 압축
gzip 20241201.log

# 2024로 시작해서 .log로 끝나는 파일 모두 압축
gzip 2024*.log

# gz 압축된 파일 압축 풀기
# gzip -d 20241201.log.gz

 

이럴땐 gzip 명령어를 이용해서 gz파일로 압축하여 사용할 수 있습니다.

다만 gz 압축 시 CPU 사용량이 올라가기 때문에 실제 서비스중인 서버에서 실행하게 된다면 모니터링이 필요할 수도 있습니다.

약 1/10 크기로 줄어드는데요.

그럼에도 불구하고 이런 파일들이 늘어나게 된다면 압축만으로는 버거울 수 있습니다.

 

그럴 경우에는 삭제가 필요하겠죠?

 

저희는 로그 저장 정책을 내부적으로 6개월로 정해놨어요.

그럼 180일 이상 지난 로그는 알아서 삭제되도록 crontab에 지정해줍니다.

##### 180 days ago log files clean up
0 1 * * *  find /var/log/application/ -type f -mtime +180 -exec rm -f {} \;

 

크론탭이란 정해놓은 시간별로 특정 명령어를 실행하도록 지정해두는거에요.

복잡한 명령이 필요하면 쉘파일을 만들어서 그 쉘파일을 실행하는 명령어를 등록할 수 있겠죠?

(분 0~59 ) (시 0~23) (일 1~31) (월 1~12) (요일 0~7) 순으로 지정이 가능하구요.

여기서 요일의 경우 0과 7은 일요일, 1~6까지는 각각 월~금 입니다.

 

각각의 시간에는 특수문자를 이용할 수 있는데요.

* : 전부

, : 여러개 지정 시

- : 범위 지정 시

/ : 시간 계산

예시로 보여 드린다면 아래와 같습니다.

# /home/sopor/test.sh 을 매일 매시간 매분마다 실행
* * * * * /home/sopor/test.sh

# /home/sopor/test.sh 을 매주 월요일 0시에 실행
0 0 * * 1 /home/sopor/test.sh

# /home/sopor/test.sh 을 매월 1일 3시부터 5시까지 15분마다 실행
*/15 3-5 1 * * /home/sopor/test.sh

# /home/sopor/test.sh 을 매일 9시, 11시, 15시, 18시 0분에 실행
0 9,11,15,18 * * * /home/sopor/test.sh

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/11   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
글 보관함