как сохранить больше чем 2 файла журнала?

В поисках случайных проблем загрузки я хотел бы сохранить в файлах журнала больше чем 2, которые сохранены теперь. Например, в/var/log, у меня есть Xorg.0.log и Xorg 0.log.old, которые создаются двумя взлетами начальной загрузки, и я должен отслеживать, например, в последний раз 10 файлов журнала. Подобный для других основных файлов журнала как dmesg (теперь это - dmesg и dmesg.0).

0
задан 12 June 2014 в 10:57

2 ответа

Следующий сценарий скопирует определенный файл журнала (source) до числа можно определить (max_number, до 99 как сценарий теперь) в каталог, который можно установить (dest). Файлы журнала назовут "01logfilename", 02logfilename и т.д., до числа, которое Вы определяете.

Если макс. количество копий будет достигнуто, то сценарий будет всегда сохранять последнее (определенное) количество журналов, переименовывая файлы каждый раз, когда скрипт запущен.

Можно запустить скрипт путем добавления его к приложениям запуска (Тире> Приложения Запуска). Обратите внимание, что у Вас должны быть достаточные полномочия на месте назначения при выполнении его на входе в систему.

Сценарий

#!/usr/bin/python3
import os
import shutil

source = "/path/to/logfile"
dest = "/path/to/destination/to_keep_the_logs"
max_number = 10 # set number up to 99

files_indest = [i for i in sorted(os.listdir(dest)) if not i.endswith("~")]
sections = [(item[:3], item[3:]) for item in files_indest]
number_oflogs = len(files_indest)

def convert_figures(number):
    if len(str(number)) < 2:
        return "0"+str(number)
    else:
        return str(number)

def lognumbers():
    return [convert_figures(number+1) for number in range(0, number_oflogs+1)]

lognumbers = lognumbers()

if number_oflogs >= max_number:
    os.remove(dest+"/"+files_indest[0])
    for index in range(1, number_oflogs):
        shutil.move(dest+"/"+files_indest[index],
        dest+"/"+lognumbers[index-1]+files_indest[index][2:])
    shutil.copyfile(source, dest+"/"+lognumbers[-2]+source.split("/")[-1])
else:
    shutil.copyfile(source, dest+"/"+lognumbers[-1]+source.split("/")[-1])

Как использовать

  • Скопируйте сценарий и вставку в пустой текстовый файл, безопасный это как logscript.py
  • Установите источник (журнал) файл после source (например. source = "/var/log/Xorg.0.log")
  • Установите папку назначения, для хранения файлов журнала, после dest
  • Определите макс. номер файлов журнала для хранения
  • Добавьте следующую команду к своим Приложениям Запуска: python3 /path/to/script/script.py

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

1
ответ дан 24 December 2019 в 04:43

Ubuntu выполняет logrotate в задании крона, которое заботится о/var/log. Кажется, что они представляют его для рабочего стола по сравнению с сервером (сервер сохраняет последние 8 журналов всего, если я вспоминаю). Вот человек к этому.. http://manpages.ubuntu.com/manpages/jaunty/man8/logrotate.8.html

0
ответ дан 24 December 2019 в 04:43

Другие вопросы по тегам:

Похожие вопросы: