Лучший способ изящно перезапустить CentOS?

Я всегда использовал команду:

shutdown -r now

Однако иногда это вызывает проблемы с MySQL.

Какой самый изящный способ перезапустить CentOS?

Я видел:

reboot

а также

halt

Как я могу аккуратно перезагрузить машину?

5 ответов

Решение

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

  • выключение - самый распространенный способ остановить вашу систему. Добавление аргумента -r и конкретное время (илиnow') перезагрузит вашу систему, а не остановит ее после завершения работы.
  • перезагрузка - это завершение работы оболочки, которая выполняет обслуживание жесткого диска (синхронизация и / или перевод в режим ожидания, что не очень актуально).
  • Новые версии reboot (>2.74) будет инициировать shutdown если не на уровне выполнения 0 или 6.
  • Большинство сценариев инициализации вызывают halt, чтобы войти в utmp.

В современных дистрибутивах будут рассмотрены все задачи независимо от того, какую команду вы используете. По сути, все они инициируют время выполнения ваших сценариев SysV (CentOS <7) или systemd (CentOS> = 7) (я буду называть их сценариями init для простоты чтения).

Завершение работы с помощью сценариев инициализации шаг за шагом останавливает все ваши службы, зарегистрированные под обычно уровнем запуска 'S'. Индивидуальные сценарии инициализации могут иметь время ожидания, как сценарий инициализации MySQL в CentOS. Когда задан аргумент stop и демон не будет отключен в течение достаточного количества времени, сценарий остановится и завершится, что приведет к ошибке. Процесс выключения будет продолжаться, как будто ничего не случилось, только займет немного больше времени и, вероятно, напечатает предупреждение. В конце, когда все сценарии инициализации будут выполнены, произойдет неизбежное: все запущенные процессы получат SIGTERM сигнал и через несколько секунд (2 или 5), SIGKILL, Это очистит все остальное до того, как будет сделан вызов ACPI, чтобы действительно перезагрузить или завершить работу вашей системы.

Одним исключением является использование reboot команда с -f опция, это пропустит выполнение сценариев инициализации и перезагрузит систему напрямую.

Вам будет лучше устранить основную причину ваших забот: MySQL не завершает свою работу должным образом.

Часто это происходит из-за огромного объема работы, которую необходимо выполнить, прежде чем можно будет безопасно выйти из демона. Однажды у меня был экземпляр MySQL с таблицами +300.000, на выход которого ушло более часа. Подобные проблемы могут быть обнаружены в системах, использующих огромные буферы и редкую доступность ввода / вывода.

Для корректного завершения работы Centos 6.x следует использовать команду от имени root:

shutdown -h now

Это попытается остановить все запущенные службы, прежде чем корректно завершить работу сервера.

Использование этой команды также предотвращает проблемы с сокетом mySQL.

Точно так же для изящной перезагрузки:

reboot -h now

Вы можете прочитать предыдущий ответ о подобном вопросе здесь:

https://stackoverflow.com/questions/20407292/centos-another-mysql-daemon-already-running-with-the-same-unix-socket

Я использую команду "init 6".

init 6 говорит процессу init отключить все порожденные процессы / демоны, как записано в файлах init (в обратном порядке, в котором они были запущены), и, наконец, вызвать команду shutdown -r now для перезагрузки компьютера.

Более подробную информацию можно найти по этому вопросу.

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

Я всегда использовал команду:

выключение -r сейчас

Однако иногда это вызывает проблемы с MySQL.

Проблема здесь НЕ в вашем методе выключения, а в том программном обеспечении, которое не может правильно справиться с выключением; MySql.

Единственный способ действительно решить эту проблему - заменить MySql (PostgreSql - отличная замена) ИЛИ написать свой собственный скрипт выключения, который ПЕРВЫЙ балует MySql, как ребенок, и когда он счастлив, что его закрывают, ТО выключает систему.

... Как человек, который специализируется на системах баз данных более 26 лет, я могу вам сказать, что только в очень недавние времена MySql начал действовать в отношении компетентности в наиболее важных аспектах систем баз данных. для - безопасность / целостность данных. Раньше они обращали меньше внимания на эти аспекты и больше внимания на производительность. Но что хорошего в отличной производительности, если вы потеряете данные? В НЕКОТОРЫХ приложениях, таких как, скажем, потоковая запись видео Netflix, в какой момент вы просматриваете, абсолютная точность может не иметь особого значения - может быть, даже ваши клиенты НРАВИТСЯ, что видео немного копируется после сбоя. Но в банковской системе это катастрофа эпических масштабов. Только владелец данных может знать, что им подходит.

Давая удаленные инструкции конечным пользователям и клиентам, я даю им указание использовать poweroff выключить и выключить систему.

Если они хотят теплую перезагрузку, я предлагаю им использовать reboot команда.

Я полагаю, можно сказать, что выдачаCtrl-Alt-Delete и выполняет это;)

Другие вопросы по тегам