Подмена файла, в который идёт запись - как?
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Подмена файла, в который идёт запись - как? - 2012-04-06 18:16:15.790000
|
|
|
mr_Anderson
Сообщений: 140
Оценки: 0
Присоединился: 2008-11-29 19:52:02.186666
|
Проблема всё та же - не могу разбить лог-файл налету. Создаю третий топик по этому поводу, но к решению проблемы подхожу опять с нового ракурса, по этому и задача уже становится достаточно уникальной и даже интересной. Теперь вся идея крутится вокруг специфики файловой системы под Линуксом и особенностей работы с файлами, которые я пока ещё не постиг. Есть во всей этой науке и симлинки и хардлинки и какие то там ещё средства досттупа к файлам а так же разные режимы работы с ними. Всё это тёмный лес. Для меня. А для вас надеюсь нет и вы щас всё поймёте) Как, в каком режиме создаётся и потом открывается лог-файл - я хз, но в результате мы имеем следующее: Программа пишет лог в файл net.log Несколько(видимо достаточно много) раз в секунду этот лог дописывается новой инфой. Если файл net.log удалить - логирование прекращается. Программа не пересоздаёт его. Если этот файл переименовать скажем в newnet.log, то программа продолжает писать в newnet.log как ни в чём не бывало. После виндуса слекга странновато такое наблюдать Каким таким чудесным образом программа приконнектилась к файлу, что ей пофигу его имя? - это просто интересно. Ну а практический вопрос - при данных обстоятельствах, при данном режиме работы с файлом, какие я имею возможности? Могу ли я как то подменить этот файл на пустой, а оригинал(его содержимое) изъять для дальнейшей обработки? Возможно как то перенаправить запись лога на новый файл, или просто вырезать его содержимое, не прерывая записи?
|
|
|
RE: Подмена файла, в который идёт запись - как? - 2012-04-06 21:03:32.770000
|
|
|
zzsnn
Сообщений: 7459
Оценки: 680
Присоединился: 2007-09-25 07:17:14.240000
|
Что за приложение создаёт лог?
|
|
|
RE: Подмена файла, в который идёт запись - как? - 2012-04-07 00:12:24.736666
|
|
|
mr_Anderson
Сообщений: 140
Оценки: 0
Присоединился: 2008-11-29 19:52:02.186666
|
Всё тот же сервер игры АрмА2
|
|
|
RE: Подмена файла, в который идёт запись - как? - 2012-04-09 07:16:53.860000
|
|
|
WinLinux
Сообщений: 491
Оценки: 0
Присоединился: 2008-07-18 14:06:33.563333
|
Если удалить [net.log/i] то вполне логично, что программа перестает в него писать, так как для это потребуется перезапустить программу, чтобы она его создала занова. Ты ранее создал тему "Ротация логов", вот с помощью этой самой ротации и происходит разбивка лога по достижению како-то заданного параметра, обычно это размер файла (лога), но оно приемлимо только в том случае если твоя программа выполняет логирование через системный syslog. Я советую тебе снимать лог через обычный tar, который позволяет архивировать файлы, в которые идет запись. У меня в конторе есть приложение на Java, которое все время пишет в один файл. Чтобы снять лог я выполняю к примеру следующее: 1. tar czvf /tmp/my_log.tar.gz my_log.log 2. Далее остается его только скопировать и распоковать при необходимости.
|
|
|
RE: Подмена файла, в который идёт запись - как? - 2012-04-09 07:50:57.890000
|
|
|
The Joker
Сообщений: 3485
Оценки: 99
Присоединился: 2008-10-07 16:22:13.730000
|
Изменив имя файла, ты ведь сразу же создаёшь пустой файл со старым именем, верно? Или нет? Давай так. Ты создаёшь скрипт примерно нижеследующего содержания (с поправками на пути, имена файлов и т.д.), делаешь его исполняемым, запускаешь и докладываешь, ок? #! /bin/bash
PATH_TO_LOGS=/var/log
LOG_FILE_NAME=hrenolog
TIMESTAMP=`date +%Y.%m.%d.%H.%M.%S`
cp ${PATH_TO_LOGS}/${LOG_FILE_NAME}.log ${PATH_TO_LOGS}/${LOG_FILE_NAME}-${TIMESTAMP}.log
cat /dev/null > ${PATH_TO_LOGS}/${LOG_FILE_NAME}.log
|
|
|
|
|