User Asked: 2014-08-15 17:48:44 +0800 CST2014-08-15 17:48:44 +0800 CST 2014-08-15 17:48:44 +0800 CST 优雅重启 CentOS 的最佳方法? 772 我总是使用命令: shutdown -r now 但是,有时这会导致 MySQL 问题。 重启 CentOS 最优雅的方式是什么? 我见过: reboot 和 halt 如何轻轻重启机器? centos 5 个回答 Voted Best Answer Joffrey 2014-08-24T13:27:16+08:002014-08-24T13:27:16+08:00 使用 systemd (CentOS >=7) 的系统会有reboot,shutdown和符号链接的halt命令systemctl来处理重启。systemctl 程序将检测符号链接的使用并使用相应的参数运行 systemctl 命令。有关命令之间的区别,请参见 systemctl ( man systemctl) 的手册页,因为它的文档非常详细。 对于 CentOS 6,除了原始问题中所述的任何命令之外,没有更好的方法来重新启动服务器: 关机是停止系统的最常用方法。添加参数-r和特定时间(或“ now”)将重新启动您的系统,而不是在关机序列后暂停它。 reboot是一个包装器循环关闭,它执行一些硬盘维护(同步和/或进入待机模式,并不真正相关)。 如果不在运行级别 0 或 6 中,reboot将启动 (>2.74)的新版本。shutdown 大多数初始化脚本都会调用halt来登录utmp。 无论您使用什么命令,现代发行版都将涵盖所有任务。基本上,它们都会启动您的SysV (CentOS <7) 或systemd (CentOS >=7) 脚本的关闭运行时(为了便于阅读,我将它们称为 init 脚本)。 使用 init 脚本逐步关闭通常在运行级别“S”下注册的所有服务。个别初始化脚本可以有超时,就像 CentOS 中的 MySQL 初始化脚本一样。当给定 stop 参数并且守护程序不会在相当长的时间内关闭时,脚本将停止并退出并给出失败。关闭过程将继续进行,就好像没有任何问题一样,只需要更长的时间并且可能会打印一个警告。最后,当所有的 init 脚本都被执行时,不可避免的事情会发生:所有仍在运行的进程都会收到一个SIGTERM 信号,并且在几秒钟(2 或 5 秒)后,一个SIGKILL. 这将在完成ACPI调用以真正重新启动或关闭系统之前清理其余部分。 一个例外是使用reboot带有-f选项的命令,这将跳过执行初始化脚本并直接重新启动系统。 您最好解决您担心的根本原因:MySQL 没有正确关闭。 这通常是由于在安全退出守护程序之前需要完成大量工作。我曾经有一个 MySQL 实例,其中包含 +300.000 个表,需要一个多小时才能退出。使用大缓冲区和稀疏 I/O 可用性的系统也会发现类似问题。 GeckoSEO 2014-09-05T13:26:38+08:002014-09-05T13:26:38+08:00 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 Itai Ganot 2016-08-27T06:35:24+08:002016-08-27T06:35:24+08:00 我使用命令 'init 6' 。 init 6 告诉 init 进程关闭所有在 init 文件中写入的衍生进程/守护进程(以它们启动的相反顺序),最后调用 shutdown -r now 命令重新启动机器。 可以在这个问题上找到更多信息。 ewwhite 2014-08-15T18:04:57+08:002014-08-15T18:04:57+08:00 在向最终用户和客户发出远程指令时,我指示他们使用poweroff来关闭和关闭系统电源。 如果他们想要热重启,我建议他们使用该reboot命令。 我想有人可以说发行Ctrl-Alt-Delete也实现了这一点;) Richard T 2015-04-16T16:31:41+08:002015-04-16T16:31:41+08:00 我有一种感觉,您可能不喜欢这个答案,但这个答案包含一些其他人都没有考虑过的见解。. . 你写: 我总是使用命令: 立即关闭 -r 但是,有时这会导致 MySQL 问题。 这里的问题不是您的关机方法,而是无法正确处理关机的软件;mysql。 真正解决这个问题的唯一方法是替换 MySql(PostgreSql 是一个很好的替代品)或编写自己的关闭脚本,首先像婴儿一样呵护 MySql,当它很高兴被关闭时,然后关闭系统。 ... 作为一个专注于数据库系统超过 26 年的人,我可以告诉你,直到最近,MySql 才开始在数据库系统最重要方面的能力方面采取行动for - 数据安全/完整性。以前,他们较少关注这些方面,而更多地关注性能。但是,如果您丢失数据,那么出色的性能又有什么用呢?在某些应用程序上,例如 Netflix 流式视频录制在您观看的时间点上,绝对保真度可能不是特别重要 - 甚至可能,您的客户喜欢在失败后备份的视频。但在银行系统中,这是一场史诗般的灾难。只有数据所有者才能知道什么是适合他们的。
使用 systemd (CentOS >=7) 的系统会有
reboot
,shutdown
和符号链接的halt
命令systemctl
来处理重启。systemctl 程序将检测符号链接的使用并使用相应的参数运行 systemctl 命令。有关命令之间的区别,请参见 systemctl (man systemctl
) 的手册页,因为它的文档非常详细。对于 CentOS 6,除了原始问题中所述的任何命令之外,没有更好的方法来重新启动服务器:
-r
和特定时间(或“now
”)将重新启动您的系统,而不是在关机序列后暂停它。reboot
将启动 (>2.74)的新版本。shutdown
无论您使用什么命令,现代发行版都将涵盖所有任务。基本上,它们都会启动您的SysV (CentOS <7) 或systemd (CentOS >=7) 脚本的关闭运行时(为了便于阅读,我将它们称为 init 脚本)。
使用 init 脚本逐步关闭通常在运行级别“S”下注册的所有服务。个别初始化脚本可以有超时,就像 CentOS 中的 MySQL 初始化脚本一样。当给定 stop 参数并且守护程序不会在相当长的时间内关闭时,脚本将停止并退出并给出失败。关闭过程将继续进行,就好像没有任何问题一样,只需要更长的时间并且可能会打印一个警告。最后,当所有的 init 脚本都被执行时,不可避免的事情会发生:所有仍在运行的进程都会收到一个
SIGTERM
信号,并且在几秒钟(2 或 5 秒)后,一个SIGKILL
. 这将在完成ACPI调用以真正重新启动或关闭系统之前清理其余部分。一个例外是使用
reboot
带有-f
选项的命令,这将跳过执行初始化脚本并直接重新启动系统。您最好解决您担心的根本原因:MySQL 没有正确关闭。
这通常是由于在安全退出守护程序之前需要完成大量工作。我曾经有一个 MySQL 实例,其中包含 +300.000 个表,需要一个多小时才能退出。使用大缓冲区和稀疏 I/O 可用性的系统也会发现类似问题。
Centos 6.x 的正常关闭应该通过以 root 身份使用命令来完成:
这将尝试在正常关闭服务器之前停止所有正在运行的服务。
使用此命令还可以防止 mySQL 套接字问题。
同样,对于正常重启:
您可以在此处阅读有关类似问题的先前答案:
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 命令重新启动机器。
可以在这个问题上找到更多信息。
在向最终用户和客户发出远程指令时,我指示他们使用
poweroff
来关闭和关闭系统电源。如果他们想要热重启,我建议他们使用该
reboot
命令。我想有人可以说发行
Ctrl-Alt-Delete
也实现了这一点;)我有一种感觉,您可能不喜欢这个答案,但这个答案包含一些其他人都没有考虑过的见解。. . 你写:
这里的问题不是您的关机方法,而是无法正确处理关机的软件;mysql。
真正解决这个问题的唯一方法是替换 MySql(PostgreSql 是一个很好的替代品)或编写自己的关闭脚本,首先像婴儿一样呵护 MySql,当它很高兴被关闭时,然后关闭系统。
... 作为一个专注于数据库系统超过 26 年的人,我可以告诉你,直到最近,MySql 才开始在数据库系统最重要方面的能力方面采取行动for - 数据安全/完整性。以前,他们较少关注这些方面,而更多地关注性能。但是,如果您丢失数据,那么出色的性能又有什么用呢?在某些应用程序上,例如 Netflix 流式视频录制在您观看的时间点上,绝对保真度可能不是特别重要 - 甚至可能,您的客户喜欢在失败后备份的视频。但在银行系统中,这是一场史诗般的灾难。只有数据所有者才能知道什么是适合他们的。