Задача Cron для удаления файлов старше 3 дней

Мне нужно удалить файлы старше 3 дней с заданием cron в 3 разных каталогах. (эти 3 каталога являются дочерними элементами родительского каталога /a/b/c/1 & /a/b/c/2 & /a/b/c/3 ) Можно ли это сделать с помощью одной строки в crontab?

2 Solutions collect form web for “Задача Cron для удаления файлов старше 3 дней”

Это достаточно просто (хотя обратите внимание, что это время модификации более 3 дней назад, поскольку время создания доступно только для определенных файловых систем со специальными инструментами):

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

Удалите # перед -delete только вы убедитесь, что находите файлы, которые хотите удалить.

Чтобы запустить его cron, я бы просто создал исполняемый скрипт (добавьте shebang – #!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 {} + 

Снова удалите # когда вы уверены, что у вас есть нужные файлы.

Update2

Чтобы процитировать комментарий Стефана Чазеласа ниже:

Обратите внимание, что -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. 
  • Время, оставшееся для следующего прогона
  • Добавить временные метки для вывода команды «top»
  • Почему у моего файла есть несколько записей crtime?
  • Извлечь временную метку из файла gzip
  • Использовать awk для печати и редактирования даты
  • Почему sudo timestamp не обновляется при установке NOPASSWD?
  • Как отрегулировать временную метку Exif фотографии, используя дату в названии
  • Сравнение времени файла в ksh
  • В Ubuntu - / var / log / messages отметки времени на 4 минуты вперед
  • Как удалить файлы в одной папке, которая старше 60 дней в UNIX?
  • Использовать только mtime-сравнение с rsync?
  • Linux и Unix - лучшая ОС в мире.