我总是使用以下命令:

shutdown -r now


但是,有时这会导致MySQL问题。

重新启动CentOS的最优雅的方法是什么?
/>
我见过:

reboot




halt


我如何轻轻地重新启动机器?

评论

重新启动本质上是关闭-r ... so ...是的别名。

我的帖子回答了您的问题,还是您需要了解其他内容?

目前无法在此处发表评论,但我想在此处发出有关重启的警告。如果该实例位于Amazon EC2上,则现在执行reboot -h将对实例进行实例化,因此切勿执行此操作。相反,如果您必须关闭或重新引导,请通过Amazon的在线界面(而不是外壳程序)进行操作。如果您对实例进行砌块,则可以停止它,分离卷,创建一个单独的实例并将该卷附加到该实例,而无需分离新实例随附的第一个卷。然后,您需要ssh进入新实例,挂载旧卷,并从中取出文件。

实际上,您要运行同步:在运行shutdown -r之前,所有文件I / O将被同步。我怀疑这也可以解决mysql问题。

#1 楼

没有什么比使用这些命令来重启服务器更好的方法了。关机是停止系统的最常用方法。添加参数-r和特定时间(或'now')将重新启动系统,而不是在关闭序列后将其暂停。或进入待机模式,但实际上并没有什么意义。)
如果不在运行级别0或6中,则新版本的reboot(> 2.74)将启动shutdown
大多数初始化脚本都调用halt进行utmp登录。

现代发行版将涵盖所有任务,而与您使用的命令无关。基本上,它们都会启动SysV(CentOS <7)或systemd(CentOS> = 7)脚本的关闭运行时(为了方便阅读,我将它们称为init脚本)。
init脚本逐步停止通常在运行级别“ S”下注册的所有服务。个别的初始化脚本可能会有超时,例如CentOS中的MySQL初始化脚本。当给出stop参数并且守护程序在相当长的时间内不会关闭时,脚本将停止并退出并给出失败信息。关闭过程将继续进行,就好像什么都没错一样,只需要更长的时间,并且可能会显示警告。最后,当执行所有初始化脚本时,不可避免的事情发生:所有仍在运行的进程将收到SIGTERM信号,并在几秒钟(2或5)后收到SIGKILL。这将在完成ACPI调用以真正重启或关闭系统之前清理其余部分。

一个例外是使用带有reboot选项的-f命令,这将跳过执行初始化脚本并重新启动直接使用系统。

更好地解决引起您担忧的根本原因:MySQL无法正确关闭。

通常这是由于在安全退出守护程序之前需要完成大量工作。我曾经有一个带有+300.000表的MySQL实例,该过程花了一个多小时才退出。使用大缓冲区和稀疏I / O可用性的系统也会发现类似问题。

评论


对不起,您听起来很无知,但是您听起来好像知道自己在说什么,所以我想问一问:)“呼叫暂停以登录utmp”是什么意思?通过该链接,“ utmp可以全面了解系统的当前状态,系统启动时间(由正常运行时间使用),记录用户登录的终端,注销,系统事件等。但这并不能真正告诉我它是什么,或者您的评论是什么意思。

–́Neek
19/12/15在15:57

@Neek不需要提出任何借口!关闭是命令的复杂组合,具体取决于系统的状态。在所有命令(“暂停”,“重新引导”,“关闭”)中,此命令是停止系统(或在这种情况下调用另一个脚本)的一种方法。特殊参数“ -w”将写入一个utmp条目,并被认为在CentOS 6初始化脚本中使用。有点像:停止调用shutdown,关闭调用init-scripts和init-scripts将使用“ halt -w”来编写关闭时间戳。对于systemd的使用,这种骗术是一个很好的论据。

–乔佛里
19/12/16在15:13

#2 楼

可以通过以root用户身份使用命令来正常关闭Centos 6.x:

shutdown -h now


这将尝试在正常关闭服务器之前停止所有正在运行的服务。

使用此命令还可以防止mySQL套接字问题。

类似地,要正常重启,请执行以下操作:

可以在这里阅读有关类似问题的先前答案:

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

评论


我认为您的意思是立即关机-r,或者只是重新启动。 reboot命令没有-h选项。

–迈克尔·汉普顿
2014年9月5日在1:10



Michael,您好,Centos 6.x确实可以选择在重新启动之前暂停服务。 “ shutdown -h now”是正常关闭,“ reboot -h now”是正常重启。在您的Centos服务器上尝试...

– GeckoSEO
2014年9月6日在0:02



哦? -h选项的作用是什么?它不在手册页中。

–迈克尔·汉普顿
2014年9月6日下午0:07

真?您是否有一些文档?因为,首先,这是不带-h重启的功能。第二,据我所知,根本没有那样记录。

–迈克尔·汉普顿
2014年9月6日下午0:22

您刚刚链接的文档说明了我一直在告诉您的内容! reboot没有-h选项,shutdown有-h选项。

–迈克尔·汉普顿
2014年9月7日15:23



#3 楼

我使用命令'init 6'。

init 6告诉init进程关闭init文件中写入的所有生成的进程/守护程序(按它们启动的相反顺序),最后调用shutdown -r now命令重新启动计算机。

有关此问题的更多信息。

#4 楼

当向最终用户和客户提供远程指导时,我指示他们使用poweroff关闭并关闭系统电源。

如果他们想要热启动,我建议他们使用reboot命令。

我想也许可以说,发行Ctrl-Alt-Delete也可以做到这一点;)

评论


我不同意这个答复。重新启动和关闭(Ctrl-Alt-Delete)是强制性的,并且在某些环境(例如运行mySQL的环境)中可能会导致套接字“锁定”,然后需要创建新的套接字或删除/移动现有套接字,然后再重新创建一。

– GeckoSEO
2014年9月4日在21:36

@GeckoSEO这是一个有趣的建议,指的是允许在Linux服务器上启用Ctrl-Alt-Delete的危险。

–ewwhite
2014年9月4日在21:38

另一方面,我的回答并不刻薄,我只是想为那些试图解决这个问题的人澄清答案。请查看我之前的答案,希望对您有所帮助。

– GeckoSEO
2014年9月4日在21:42



#5 楼

我觉得您可能不喜欢此答案,但是此答案包含一些其他人都没有考虑的见解。 。 。您写道:


我一直使用以下命令:

shutdown -r now

但是,有时这会导致MySQL问题。 br />

这里的问题不是您的关机方法,而是无法正确处理关机的软件; MySql。

真正解决这个问题的唯一方法是替换MySql(PostgreSql是一个很好的替代品),或者编写自己的关闭脚本,让FIRST像个婴儿一样抚慰着MySql,并且很高兴被关闭然后关闭系统。

...作为一个从事数据库系统工作超过26年的人,我可以告诉您,直到最近,MySql才开始就其能力方面采取行动数据库系统的最重要方面-数据安全性/完整性。以前,他们很少关注这些方面,而更多地关注性能。但是,如果丢失了数据,那么出色的性能又有什么好处呢?在某些应用程序上,例如Netflix在您正在观看的点上流式传输视频记录时,绝对保真度并不是特别重要-甚至,即使您的客户喜欢在发生故障后备份视频,也是如此。但是在银行系统中,这是一场史诗般的灾难。只有数据所有者才能知道什么是适合他们的。

评论


仅仅因为重启或关闭系统问题而替换mysql?解决方案的最后一部分对解决提出问题的人的问题没有任何帮助

– ftrujillo
16年11月11日15:13



这个答案偏向于没有资料或参考的mysql。在问题的上下文中没有用;任何退出时间过长的软件都可能在重新引导时引起问题(尤其是systemd及其激进的超时)。

– Harald
19/09/10在18:34