LINUX.ORG.RU
ФорумAdmin

перенос логов без останова софта

 ,


0

2

Нужно перенести /var/log на другой винт на нагруженном сервере. Есть мысли, как можно сделать симлинк на каталог «нагорячую»?
P.S. логи не на целый отдельный винт, а в каталог на винте, поэтому всё же симлинк предпочтительнее.

★★★★★

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

anonymous ()
Ответ на: комментарий от leave

А дескрипторы файловые за тебя кто переоткрывать будет?

Дед Пехто, и бабка с пистолетом, кто ж еще..Я про них тоже думаю, вот и воспрашал ЛОР на тему светлых мыслей, возможно ли вообще. Пока вижу только вариант, озвученный аноном сверху, чтобы переопределять новый файл для лога и там уже дальше менять всё как хочется. Но хочется как-нибудь поинтересней, чтоли..

v9lij ★★★★★ ()
Ответ на: комментарий от v9lij

Напиши однострочник который делает cat oldlog newlog; :> oldlog. Достаточно интересно? При truncate дескрипторы не поломаются.

entefeed ☆☆☆ ()

Олсо, можно приаттачиться к проблемным процессам с помощью gdb и насильно им переделать файловые дескрипторы на новые. Гуглится легко по «linux gdb change descriptor», даже готовые скрипты-многострочники уже есть.

entefeed ☆☆☆ ()

твой софт, конечно же, умеет в сигналы?

вон, в сислоге можно по HUP переоткрыть файл в который пишется лог.
поменял путь в конфигах, послал HUP, готово. после очередной ротации приклеил ошметки, которые остались от твоих махинаций к новому логу.

или просто отредактировать конфиг и подождать очередной ротации.

aol ★★★★★ ()

Примонтируй новую ФС поверх /var/log — открытые файлы продолжат писаться в старое место, новые — в новое.

mount --bind /var/log /mnt/log --- доступ к "старой" ФС

anonymous ()
Ответ на: комментарий от anonymous

mount --bind /var/log /mnt/log --- доступ к «старой» ФС

Интересный вариант. Все messages/syslog/etc начнут себя писать в в новый каталог при первой ротации как я понимаю?

v9lij ★★★★★ ()
Ответ на: комментарий от v9lij

cp /var/log/* /mnt/newlog  — "наживую"

mount --bind /var/log /mnt/oldlog --- чтобы остался доступ к старой директории логов

umount /mnt/newlog

mount /dev/$NEWLOGBLOCKDEVICE /var/log

service $SYSLOG reload

Да старое будет дописываться в уже открытые файлы, новые появятся уже в новом /var/log

Потом вытащишь/удалишь через /mnt/oldlog нужные файлы

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.