1

Ubuntu 14.04 обеспечивает ротацию журналов для Tomcat 7 и предполагает, что файлы журналов названы по дням, поэтому он ищет те, а существующие архивируются и удаляются. В зависимости от того, существуют ли файлы журнала и как часто они меняются, это может противоречить схеме ежемесячного именования, которую используют мои собственные веб-приложения, размещенные на Tomcat 7:

/etc/cron.daily/tomcat7:

gzip: /var/log/tomcat7/…/RebootDevice/2017-05.log.gz already exists;       not overwritten

Я могу жить с этими сообщениями, отправляемыми каждые несколько дней или недель, потому что сообщения журнала по умолчанию содержат только ошибки, и они не должны возникать слишком часто. Я не понимаю, почему я получаю это сообщение уже второй день. Ubuntu делает следующее:

find /var/log/$NAME/ -name \*.$LOGEXT -daystart -mtime +0 -print0

Я проверил это на моих реальных каталогах со следующими результатами:

root@…:/var/log/tomcat7/…/RebootDevice# ls -lisa
[…]
1089049 0 -rw-r--r-- 1 tomcat7 tomcat7    0 Mai 29 09:09 2017-05.log
1089047 4 -rw-r--r-- 1 tomcat7 adm      402 Mai 26 10:22 2017-05.log.gz

root@…:/var/log/tomcat7/…/RebootDevice# find . -name \*.log -daystart -mtime -0
root@…:/var/log/tomcat7/…/RebootDevice# find . -name \*.log -daystart -mtime +0
./2017-05.log

Как вы можете видеть, вызов с использованием +0 находит мой файл, даже если он был последний раз записан два дня назад, а использование -0 - нет. -mtime определяется как n*24 часа, поэтому +/-0 не должно иметь никакого значения, и, насколько я понимаю, -daystart привязывает тесты только к началу полного дня, должно быть 00:00 .

Так почему же -0 против +0 ведут себя по-разному в этом случае? Кажется, разница составляет 1*24 часа.

1 ответ1

0

От man find:

-mtime n
Данные файла были последний раз изменены n*24 часа назад. [...]

Независимо от того , используете ли вы -daystart или нет, независимо от того, как округления работы, для конкретного вызова find все файлы могут быть разделены на несколько непересекающихся множества как - то:

  • A: файлы, измененные 0 дней назад,
  • B: файлы, измененные 1 день назад,
  • C: файлы, измененные 2 дня назад,
  • D: файлы изменены 3 дня назад,
  • ...

В руководстве также говорится:

Числовые аргументы могут быть указаны как

+n больше n ,
-n меньше чем n ,
n именно для n .

Как вы можете видеть, знак минус не является (математическим) фактором минус один здесь. Вместо:

-mtime -0 ничего не соответствует;
-mtime 0 соответствует множеству A;
-mtime +0 соответствует B, C, D,….

-mtime -1 соответствует множеству A;
-mtime 1 соответствует набору B;
-mtime +1 соответствует C, D,….

-mtime -2 соответствует A и B (это эквивалентно ! -mtime +1);
и так далее.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .