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
옵션 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.