-3

У меня есть веб-сервер, который после перезапуска не может отобразить наш основной сайт. Я думаю, что это связано с обновлениями, применяемыми после перезагрузки.

Могу ли я перезапустить Ubuntu без применения обновлений?

2 ответа2

2

После того, как вы выполнили apt-get upgrade или что-то подобное и обновили некоторые пакеты, нет простого способа заставить старые версии файлов пережить перезагрузку. Вы можете играть с пакетами и восстанавливать их старые версии; технически это не возвращает сами старые файлы, оно создает новые файлы с идентичным содержимым.

"Применение обновлений" во время перезагрузки - это не то, о чем вы думаете.

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

По этой причине обновления (или, в apt-get: upgrades) могут выполняться из работающей системы. Это распространено. Сравните с способом Windows, где некоторые файлы заблокированы, если ОС еще не (или больше не) полностью запущена. В Linux нет необходимости перезагружаться, если вы просто хотите заменить файл в файловой системе, который достаточно умен.

Заметьте, что "замена файла в файловой системе" - это нечто иное, чем "заставить процессы использовать новый файл".

Создание процессов, использующих новые файлы, требует от них открытия дескрипторов, ведущих к новым версиям. Я не знаю ни одного безопасного способа принудительного "переназначения" дескриптора, если только процесс не взаимодействует и не открывает файл заново (например, он отслеживает имя файла, например tail --follow=name , или он открывается по требованию). Кроме того, сам исполняемый файл может быть обновлен.

Обычно лучший способ "переключить" демон на новые файлы - это перезапустить его. Некоторые сценарии обновления перезапускают некоторые демоны. С другой стороны, перезапуск только некоторых частей работающей ОС может быть громоздким или невозможным (см. Как серверы Linux обновляют свое ядро без перезагрузки).

Вот почему вы можете получить "перезагрузка системы требуется". Обратите внимание, что нет никаких обновлений во время перезагрузки. Что происходит, если старые версии становятся "неиспользуемыми" во время фазы выключения, тогда файловая система знает, что может рассматривать их как несуществующие и повторно использовать пространство. Перезапуск - это просто надежный способ убедиться, что все использует обновленные файлы, которые уже есть.

-1

В большинстве конфигураций Ubuntu обновления не применяются по умолчанию при перезагрузке (в отличие от Windows). Если вы специально не установили и не настроили программное обеспечение для автоматического обновления, Ubuntu не будет обновляться автоматически. Вероятно, есть какая-то другая ошибка в конфигурации вашего веб-сервера.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .