LINUX.ORG.RU

Не работает атрибут mtime в команде find

 , ,


0

2

Добрый день,

Столкнулся со следующей проблемой при создании скрипта и его запуске на хостинге сайта (Операционная система Ubuntu). Необходимо найти и удалить все файлы с датой создания старше чем 2 минуты.

строка

find /site/mysql_backup* -mtime +7 -exec rm {} \;

выполняется нормально (без ошибок). Но эта команда должна удалить все бэкапы старше 7 дней.

Я пытаюсь задать аналогичную, только чтобы бэкапы удалялись через 2 минуты. Я пробовал

find /site/mysql_backup* -mtime +2m -exec rm {} \;
find /site/mysql_backup* -mmin +2 -exec rm {} \;
find /site/mysql_backup* -mmin 2 -exec rm {} \;

Во всех случаях выводятся какие-либо ошибки:

find: invalid argument `-exec' to `-mtime'
find: pred.c:1932: launch: Assertion `starting_desc >= 0' failed.

Не могу понять в чем дело. Буду признателен за компетентный ответ. Спасибо.


find /site/mysql_backup* -mmin +2 -exec rm {} \;

Это правильный синтаксис. Какая конкретно ошибка с ним выводится?

CYB3R ★★★★★ ()

find везде разный. Вероятно, что в твоей версии такие опции отсутствуют.

man find
/mmin
Если ничего не найдется, то так оно и есть. Например, в solaris 10 для find опции -mmin нет.

andrew667 ★★★★★ ()
Ответ на: комментарий от CYB3R

да, сначала работало. Но потом стало появляться вот такое сообщение:

find: pred.c:1932: launch: Assertion `starting_desc >= 0' failed.
Aborted
Vert ()
Ответ на: комментарий от andrew667

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

Vert ()
Ответ на: комментарий от Vert

почему нельзя сделать везде чтобы команда и ключи выглядели одинаково

Видишь ли, в программах изменяются/появляются разные опции в более новых версиях.

andrew667 ★★★★★ ()
Ответ на: комментарий от CYB3R

Эта система - linux-хостинг на котором висит сайт. Я подключаюсь к нему через ssh. Не знаю работало оно раньше или нет (я им только-только начал пользоваться)

Vert ()
Ответ на: комментарий от Vert

Если ты сам эту систему администрировать не можешь, то пинай техподдержку своего хостинга. Админы криворукие, наверное, что-нибудь криво обновили, вот у тебя find и отвалился.

CYB3R ★★★★★ ()
Ответ на: комментарий от CYB3R

Наверно. По крайней мере странно все это Уже написал им

Спасибо)

Vert ()

Посмотри ls -lR /site/mysql_backup* . Если сначала работало, то, возможно, find добрался до файла/каталога который не может удалить

at ★★ ()
Последнее исправление: at (всего исправлений: 1)

И, в данном случае, find находит и файлы и каталоги, а rm удаляет только файлы

at ★★ ()

Также возможно, что текущий каталог недоступен для чтения/поиска. Проверяется командой ls без параметров

at ★★ ()
Ответ на: комментарий от at

Судя по всему вы были правы.

Когда, перед тем как выполнять команду я меняю каталог непосредственно на тот, в котором операции должны быть выполнены, то все начинает работать. И еще забавно, я в итоге методом тыка выяснил, какие опции нужно ставить в find чтобы искать файлы за последние две минуты:

-mmin +2 -exec rm {} \;

Это при том, что для того, чтобы найти файлы за последние два дня флаги совсем другие:

-mtime -2 -exec rm {} \;

Очевидно, что проще было бы все интервалы поиска уместить в одном флаги и не создавать этой путаницы. Где логика в таком построении команд я не пониманию.

Vert ()
Ответ на: комментарий от Vert

А опцию -delete найти не судьба?
прочти уже ман

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.