LINUX.ORG.RU
ФорумAdmin

Как обновить libstdc без перезагрузки?


0

1

Как загрузить для всех работающих процессов новую версию libstdc, не перезагружая сервер? Понятно, что изменение файла на диске не приведёт к реальному изменению версии используемой stdc, поскольку она загружена в память, используется множеством процессов и, соответственно, вновь запускаемые процессы тоже будут получать старую библиотеку.
Но, может быть, есть какой-то способ дружно сбросить все активные процессы в swap, заменить версию stdc и загрузить из обратно?

★★★★★

дружно сбросить все активные процессы в swap, заменить версию stdc и загрузить из обратно

а если ABI поменяется?

x0r ★★★★★
()

вновь запускаемые процессы тоже будут получать старую библиотеку

Неверно. Вновь стартующие процессы будут получать свежую libc.so.6, потому что у файла поменялся inode.

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

а если ABI поменяется?

С вероятностью 0.001% ?

DRVTiny ★★★★★
() автор топика

Просто перезапусти нужную софтину, она уже слинкуется с новой либой. Старые до перезапуска будут юзать старую версию. Это ж не винда) Всё что не касается ядра не требует перезагрузки.

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

Я заблуждался насчет inode, но все остальное верно: уже запущенные процессы будут использовать старую glibc, вновь запущенные процессы — новую. Соответственно, если был критичный апдейт, следует перезапустить все сервисы, покилять все agetty и попросить init перезапуститься (telinit U)

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

а можно просто ранлевел передернуть :)

leave ★★★★★
()

невозможно, тк потребует индивидуальной модификации памяти каждого процесса

anonymous
()

и, соответственно, вновь запускаемые процессы тоже будут получать старую

библиотеку
ложь

anonymous
()

libstdc

это где оно так называется? :)

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