3 개의 다른 디렉토리에서 cron 작업으로 3 일이 지난 파일을 제거해야합니다. (이 3 개의 디렉토리는 상위 디렉토리의 하위 디렉토리 /a/b/c/1
& /a/b/c/2
& /a/b/c/3
) crontab에서 한 줄로 수행 할 수 있습니까?
답변
작성 시간은 특수 도구가있는 특정 파일 시스템에서만 사용할 수 있기 때문에 3 일 이상 전에 수정 시간이 소요된다는 점에 유의하십시오.
find /a/b/c/1 /a/b/c/2 -type f -mtime +3 #-delete
를 제거 #
전과 -delete
확실이 제거 할 파일을 찾는 것을 일단.
이 크론에 의해 실행되도록하려면, 나는 아마 실행 스크립트를 (A 오두막을 추가 – 생성 할 #!bin/sh
파일의 상단 라인과와 실행하기 chmod a+x
), 다음 적절한에 넣어 cron
같은 디렉토리 /etc/cron.daily
나 /etc/cron.weekly
. 물론 더 구체적인 일정이 필요하지 않으며 이러한 디렉토리가 배포판에 존재해야합니다.
최신 정보
아래에서 언급했듯이에 대한 -delete
옵션 find
은 이식성이 떨어집니다 . POSIX 호환 방식은 다음과 같습니다.
find /a/b/c/1 /a/b/c/2 -type f -mtime +3 #-exec rm {} +
#
올바른 파일이 있다고 확신 하면를 다시 제거 하십시오.
업데이트 2
Stéphane Chazelas의 인용문은 다음과 같습니다.
참고
-exec rm {} +
경쟁 조건 취약점이 있습니다-delete
(가능한 경우)을 가지고하지 않습니다. 따라서 다른 사람이 쓸 수있는 디렉토리에서는 사용하지 마십시오. 일부 발견은 또한-execdir
이러한 취약점을 완화시키는 것을 가지고 있습니다 .
답변
당신은 사용하는 것이 훨씬 나을 것입니다 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.