Скрипт для удаления файлов старше 6 месяцев

12

Настройка задания cron на один раз в месяц для запуска скрипта.

сценарий состоит в том, чтобы вращать файл каждый месяц, поскольку он становится слишком большим, и переименовывать старый. когда файл старше шести месяцев, я хотел, чтобы он был удален.

Нужно запускать этот скрипт раз в месяц. Можно ли удалить старую?

Пожалуйста, дайте мне знать, если это не достаточно ясно.

Скотт Марриотт
источник
11
Почему бы просто не использовать logrotate?
Майкл Хэмптон
@scottmarriott Да, мистер Хэмптон, верно, функциональность, которую вы описали, в основном и есть то, что делает logrotate.
Братчли
Да, я только что хорошенько посмотрел на logrotate, имеет смысл всех приветствовать
Скотт Марриотт
@MichaelHampton, ты должен ответить на этот вопрос.
evilsoup

Ответы:

20

Вы можете начать с этого:

find /your/file -mtime +182 -exec rm {} +

Где +182количество дней.

ramonovski
источник
Спасибо за это, возможно, с этим можно поиграть, но я, возможно, могу
предложить
@jordanm есть идеи, почему это не сработало?
Скотт Марриотт
ApplicationServer / logs / TestClone01 $ ls -ltr всего 3320 1048458 13 декабря 09:46 SystemOut_12.12.13_09.46.29.log 28 мая 12:44 SystemOut.log.2013-05-28-12: 44: 52 71 30 мая 08: 57 SystemOut.log.2013-05-30-08: 57: 22 48432 30 мая 09:16 SystemOut.log no_env): / usr / websphere6 / was61TE_LV2 / ApplicationServer / logs / TestClone01 $ find SystemOut.log -mtime +1 - exec rm {} + find: 0652-083 Невозможно выполнить :: Файл или каталог с именем пути не существует.
Скотт Марриотт
Я изменил количество дней на 1
Скотт Марриотт
@scottmarriott Не все версии findподдержки +/-для -mtime. Какая ОС и версия findу вас есть?
Иордания
2

Вы можете просто использовать logrotate. Он уже доступен в большинстве систем Linux, и многие пакеты уже имеют предварительно настроенные сценарии logrotate, или вы можете настроить их или написать свой собственный.

Майкл Хэмптон
источник