В поисках случайных проблем загрузки я хотел бы сохранить в файлах журнала больше чем 2, которые сохранены теперь. Например, в/var/log, у меня есть Xorg.0.log и Xorg 0.log.old, которые создаются двумя взлетами начальной загрузки, и я должен отслеживать, например, в последний раз 10 файлов журнала. Подобный для других основных файлов журнала как dmesg (теперь это - dmesg и dmesg.0).
Следующий сценарий скопирует определенный файл журнала (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])
Как использовать
source
(например. source = "/var/log/Xorg.0.log"
)dest
python3 /path/to/script/script.py
Никакая потребность сказать, что, если Вы хотите / должен запустить скрипт перед входом в систему, необходимо запустить его на другом уровне.
Ubuntu выполняет logrotate в задании крона, которое заботится о/var/log. Кажется, что они представляют его для рабочего стола по сравнению с сервером (сервер сохраняет последние 8 журналов всего, если я вспоминаю). Вот человек к этому.. http://manpages.ubuntu.com/manpages/jaunty/man8/logrotate.8.html