Dev/linux
특정 시간 이후의 파일들 삭제
2ssoosike
2013. 12. 15. 18:20
리눅스에서 temp 디렉토리에 임시로 생성되는 파일들이 아주 많이 생성되는 경우가 있다.
그것도 주기적으로 아주 많이. 어차피 임시 파일들이라 더 이상 필요하지 않음에도 불구하고 엄청난 용량을 잡아 먹을 수가 있다.
그래서 이런 임시 파일들을 현재 사용중인 녀석들을 제외하곤 모두 지우고 싶었다.
처음엔 간단하게 쉘스크립트에서 ls -l /temp/*.tmp 요렇게 지울 목록 전체를 받아와서 loop를 돌면서 삭제를 하려고 했다.
그런데 "Argument list too long problem"라고 하는 메시지가 뜨면서 삭제를 할 수 없었다.
찾아보니 너무 많은 파일 수 때문에 안되는 문제였다.
내 경우 Red Hat Enterprise Linux (RHEL) 6.4 와 AIX 7.1 에서 이런 문제를 만났다.
무슨 설정에서 저 Argument 크기를 늘리라고 하던데 그것도 분명 파일의 수가 너무 커지면 의미가 없다라고 생각되서 찾아보니 이런 방법이 있더라는 것.
1. 최종 수정 시간이 10분 지난 파일들 모두 찾아서 목록으로 보기
$ find /temp/ -type f -name '*.tmp' -mmin +10 -exec ls -ltr {} \;
2. 최종 수정 시간이 10분 지난 파일들 모두 찾은 파일들 모두 삭제
$ find /temp/ -type f -name '*.tmp' -mmin +10 -exec rm -f {} \;