
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
업데이트
아래에 설명된 대로 -delete
for 옵션은 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.