# Логи два месяца не ротируются, хотя logrotate -f работает: пропал запуск по расписанию и как восстановить недостающие файлы пакета

**URL:** <https://kryptos.forum/t/logi-dva-mesyacza-ne-rotiruyutsya-hotya-logrotate-f-rabotaet-propal-zapusk-po-raspisaniyu-i-kak-vosstanovit-nedostayushhie-fajly-paketa/206>\
**Category:** Виртуальные машины и серверы\
**Tags:** виртуальные-машины\
**Created:** [30.Сентябрь.2026 09:45:27 UTC](https://kryptos.forum/t/logi-dva-mesyacza-ne-rotiruyutsya-hotya-logrotate-f-rabotaet-propal-zapusk-po-raspisaniyu-i-kak-vosstanovit-nedostayushhie-fajly-paketa/206 "2026-09-30T09:45:27Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![team\_vm](https://kryptos.forum/letter_avatar_proxy/v4/letter/t/779978/32.png) [@team\_vm](https://kryptos.forum/u/team_vm)\
**Post date:** [30.Сентябрь.2026 09:45:27 UTC](https://kryptos.forum/t/logi-dva-mesyacza-ne-rotiruyutsya-hotya-logrotate-f-rabotaet-propal-zapusk-po-raspisaniyu-i-kak-vosstanovit-nedostayushhie-fajly-paketa/206/1 "2026-09-30T09:45:27Z")

</div>

**Что было.** На сервере с Ubuntu 16.04 `syslog` и `mail.log` растут месяцами; ручной `logrotate -f /etc/logrotate.conf` отрабатывает нормально. Значит, конфигурация в порядке, а не работает **запуск по расписанию**.

**Причина.** В `/etc/cron.daily/` не оказалось скрипта `logrotate`: его когда-то удалили или он потерялся при неаккуратной чистке. Участник посоветовал переустановить пакет с восстановлением отсутствующих конфигурационных файлов:

```auto
sudo apt-get install --reinstall -o Dpkg::Options::=--force-confmiss logrotate

```

Обычный `--reinstall` пропущенные конфиги не возвращает (dpkg считает удалённый администратором конфиг осознанным решением); ключ `--force-confmiss` заставляет вернуть их. Ротация возобновилась; подтверждено.

**Как это устроено на современных системах.** На Ubuntu 18.04+ logrotate запускается не из cron, а таймером systemd: `logrotate.timer` → `logrotate.service` раз в сутки. Проверка:

```auto
systemctl status logrotate.timer # active (waiting), следующий запуск
systemctl list-timers logrotate*
journalctl -u logrotate.service -n 20 # результат последнего запуска и ошибки

```

Если таймер отключён или замаскирован, `systemctl enable --now logrotate.timer`. Файл `/etc/cron.daily/logrotate` в таких системах может присутствовать, но проверяет, не запущен ли systemd, и ничего не делает.

**Порядок диагностики «не ротируется».**

1. Запуск по расписанию есть? (таймер или cron, см. выше; на старых системах `grep -r logrotate /etc/cron*`).
2. Запуск проходит без ошибок? `logrotate -d /etc/logrotate.conf` (отладочный прогон всех конфигов) покажет первую ошибку, из-за которой пропускается блок (права каталога, дубликат пути в двух конфигах, синтаксис).
3. Файл уже ротировали недавно? `/var/lib/logrotate/status` хранит даты; при `weekly` следующая ротация только через неделю после записи, даже если файл огромный. Для ротации по размеру использовать `maxsize`, а не только период.
4. Приложение продолжает писать в старый файл после ротации? Нужен `postrotate` с сигналом приложению или `copytruncate`.

**Общее правило восстановления файлов пакета.** `dpkg -V logrotate` покажет отсутствующие или изменённые файлы пакета; `--force-confmiss` вернёт конфиги, `--reinstall` вернёт бинарники. Для системных скриптов, удалённых по ошибке, это быстрее, чем искать их копии.

Утилита описана в [документации Ubuntu](https://manpages.ubuntu.com/manpages/noble/en/man8/logrotate.8.html).
