안녕하세요. 나타입니다.
오늘은 리눅스 crontab을 이용한 자동삭제 부분을 포스팅하겠습니다.
애플리케이션을 개발할때 저는 주로 log4j를 통해 로그를 관리합니다.
물론 특정 디렉토리에 일별로 로그를 관리하지요.
하지만 애플리케이션 서버를 계속 유지보수하다보면 쌓이는 로그들이 고민거리입니다.
물론 주기적으로 보면서 삭제하면 좋지만 일을하다보면 그게 쉽지는 않죠.
방치하자니 하드디스크 용량이 문제되구요.
이럴때는 리눅스 시스템에서 스케줄러를 통해 주기적으로 삭제하는 방법이 좋습니다.
일단 crontab -e를 통해 crond 설정 파일로 진입합니다.
10 5 * * * find /home/logs/ -mtime +15 -type f -ls -exec rm {} \;
위의 구문을 예를 들어 설명하겠습니다.
10 5 * * * : 이 부분은 시간 설정 구간입니다.
다음은 find 명령어를 통해서 로그 경로를 찾은 후
-mtime 옵션을 통해 15일 전의 파일들을 찾습니다.
즉 3일전 파일을 전부 삭제하고 싶으시면 +3을 입력하면 됩니다.
(+ - 에 따라 의미가 다른데요.
+일 경우 해당일 부터 이전을 파일들을 찾고, -일 경우 해당일부터 현재까지를 찾습니다.
기호를 붙이지 않고 숫자만 입력한다면 해당일을 찾습니다.
즉 -mtime 0이라고 한다면 오늘 생성된 파일들을 찾는 것 입니다.)
-type 명령어는 특정 타입의 파일을 찾는 것입니다.
옵션 부분에 대한 설명입니다 (펼치기를 클릭하세요.)
File is of type c:
b block (buffered) special
c character (unbuffered) special
d directory
p named pipe (FIFO)
f regular file
l symbolic link
s socket
D door (Solaris)
-exec rm {} \;
exec는 다음 명령어를 실행한다고 생각하시면 됩니다.
그리고 명령어의 마지막에 \ 붙여 명령어 종료를 알립니다.
rm {} : 명령어에서 삭제를 의미합니다.
(삭제 명령어 대신에 이동도 할 수 있습니다.
-exec mv {} /home/log2/ {} \;
위처럼 말이죠.)
그렇다면 위의 스크립트를 실행하게 되면 어떻게 될까요?
5시 10분마다 /home/logs 디렉토리 하위로 있는 파일 중 15일 전의 파일들을 찾아서 삭제 할 것입니다.
crond는 주기적으로 실행될테니 이후부터는 로그가 자동으로 삭제 될 것 입니다.
감사합니다.
'Programming Bookmark > Linux' 카테고리의 다른 글
linux, mac java 프로세스 모두 죽이기(kill) (0) | 2020.04.01 |
---|---|
Mac 기본 쉘 bash shell로 사용하기 (0) | 2020.03.29 |
linux daemon process 자동 감지 스케줄러 (0) | 2019.06.12 |
리눅스(linux) 쉘스크립트(shell)에 파라미터(parameter, argument) 넘기기 (0) | 2019.02.10 |
리눅스 셸스크립트 연산 (expr, 역슬래쉬) 방법 (0) | 2019.02.10 |