3일이 지난 파일을 삭제하는 크론 작업

3일이 지난 파일을 삭제하는 크론 작업

3개의 다른 디렉터리에서 cron 작업을 사용하여 3일보다 오래된 파일을 제거해야 합니다. (이 3개 디렉토리는 상위 디렉토리 /a/b/c/1& /a/b/c/2& 의 하위 디렉토리입니다 /a/b/c/3.) crontab에서 한 줄로 이 작업을 수행할 수 있습니까?

답변1

이것은 충분히 쉽습니다(비록 생성 시간은 특수 도구를 사용하는 특정 파일 시스템에서만 사용할 수 있으므로 수정 시간이 3일 이상 지났다는 점에 유의하세요).

find /a/b/c/1 /a/b/c/2 -type f -mtime +3 #-delete

제거하려는 파일을 찾고 있다고 확신하면 #이전에 을 제거하십시오 .-delete

cron으로 실행하려면 아마도 실행 가능한 스크립트를 생성한 다음( #!bin/sh파일의 맨 윗줄에 shebang을 추가하고 로 실행 가능하게 함 ) 또는 와 같은 chmod a+x적절한 디렉토리에 넣을 것입니다 . 물론 더 구체적인 일정이 필요하지 않고 이러한 디렉터리가 배포판에 존재한다는 전제 하에 말이죠.cron/etc/cron.daily/etc/cron.weekly

업데이트

아래에 설명된 대로 -deletefor 옵션은 find이식성이 좋지 않습니다. POSIX 호환 접근 방식은 다음과 같습니다.

find /a/b/c/1 /a/b/c/2 -type f -mtime +3 #-exec rm {} +

#올바른 파일이 있다고 확신하면 다시 제거하십시오 .

업데이트2

인용하자면스테판 샤젤라스 코멘트아래에:

(사용 가능한 경우) 없는 -exec rm {} +경쟁 조건 취약점이 있습니다 . -delete따라서 다른 사람이 쓸 수 있는 디렉토리에는 사용하지 마십시오. 일부 발견에는 -execdir이러한 취약점을 완화하는 가 있습니다.

답변2

사용하는 것이 훨씬 나을 것입니다.tmpwatch

tmpwatch recursively removes files which haven't been accessed for a given time. Normally, it's used to clean up directories which are used for temporary holding space such as /tmp.

관련 정보