Исследуя эту проблему на собственном сервере, я обнаружил следующее:
$ systemctl status man-db.timer
Apr 09 08:10:00 anemone systemd[1]: man-db.timer: Not using persistent file timestamp Mon 2018-04-16 19:40:02 EDT as it is in the future.
Apr 09 08:10:00 anemone systemd[1]: Started Daily man-db cache update.
Выяснилось, что батарея платы RTC -была разряжена, поэтому система загружалась с датой в прошлом (, вероятно, взятой из файловой системы ). Подтверждено запуском
journalctl --boot
И видим, что журналы для текущей загрузки имеют неверные временные метки. Добавляю это на случай, если чья-то еще проблема совпадет с моей.
По сути, это можно сделать с помощью
sed -r -n 's/(^.*)(delimiter 1)(.*)(delimiter 2)(.*)(delimiter 3)(.+$)/\1(delimiter)\5/p' <( command that generates debug logs ) | sort | uniq -c | sort -rn
(адаптировано из здесь)
.*
может слишком много совпадать; sed
является жадным и хочет найти как можно больше совпадений как можно раньше, поэтому они могут потребоваться, например. отрицания разделителей (, которые могут быть сложными, если у вас есть неудобные разделители)^
к $
важен, если ваше выражение не соответствует всей строке, sed
будет включать несопоставленную часть в вывод sed
, например. изменив конец на/\1(delimiter)\5 -- \1\2\3\4\5\6\7/p
)sort
должен выполняться перед uniq -c
, потому что uniq -c
подсчитывает только прогоны последовательных идентичных строк, не -последовательных идентичных строк получают отдельные подсчеты uniq -c
нельзя заменить на sort -u
, потому что sort -u
только отбрасывает дубликаты, но не считает их sort
не нужен для ответа на заданный вопрос