Оказывается, что самый быстрый и самый простой способ найти большие блоки дублирования в большом журнале для меня, особенно когда существует большое повторение:
sort long_log.txt | uniq -c | sort -k1n
(Соединенный из ответов здесь и здесь.)
Это заняло 54 секунды для long_log.txt, который был тем с большим количеством повторения, которое, кажется, проблема для сценария, который сделал бы точно, что я просил, и 47 секунд для случайным образом сгенерированной, log.txt.
Строки не работают, и если существует рекурсия в рекурсии, она может сгруппировать те строки отдельно (так как у них может быть еще большее количество), но возможно Вы могли использовать данные из этого метода и затем возвратиться в журнал, чтобы найти и извлечь соответствующую часть (части).
Эта команда могла быть помещена в Ваш .bashrc
/.bash_profile
как функция:
recurrence() {
sort "$1" | uniq -c | sort -k1n
}
Так, чтобы это можно было назвать как:
recurrence long_log.txt
У меня была та же проблема при резервном копировании с помощью rsync, потому что для составления списка резервных копий требуется много минут, а жесткий диск USB иногда пропадает. Программа C в другом потоке выглядит слишком сложной. Я использую этот скрипт, который каждую минуту записывает на диск файл с текущей датой, а затем синхронизирует файловые системы, что заставляет физически записывать все кеши записи, которые могут быть там, на диски:
#!/bin/bash
while true; do
date | tee /media/frank/backup/ping.txt
sync
sleep 60
done
Замените путь к USB-диску, сохраните его как ping.sh, а затем запустите в другом терминале. Команда «tee» также показывает текущую дату в терминале, чтобы убедиться, что она все еще работает.