“shutdown”命令[或其他命令?]需要哪些参数来确保机器重新启动或关闭?
例如:Linux 版本:
# cat /etc/SuSE-release
SUSE Linux Enterprise Server 10 (x86_64)
VERSION = 10
PATCHLEVEL = 4
例如:AIX 版本:
$ oslevel -s
6100-05-01-1016
例如:SunOS 版本:
cat /etc/release
Solaris 10 10/09 s10s_u8wos_08a SPARC
Copyright 2009 Sun Microsystems, Inc. All Rights Reserved.
Use is subject to license terms.
Assembled 16 September 2009
#
例如:HP-UX 版本:
uname -r
B.11.11
请分享关闭/重新启动的经验[命令不起作用,因为机器无法访问,因为它在尝试重新启动时“卡在”某个地方 - 我的意思是不是在重新启动之后,“在”机器重新启动之前......为什么它会卡在重新启动过程的开始/中间]
答案1
检查Unix 的罗塞塔石碑了解在各种 UNIX 变体上执行常见管理任务的方法。当谈到关闭系统时,大多数系统提供两个命令:一个命令干净地停止系统服务(在具有运行级别的变体上执行关闭运行级别),另一个命令停止世界并立即重新启动(可能甚至不需要卸载)文件系统干净)。您应该始终首先尝试干净变体,并且仅在干净变体失败时才使用即时变体;如果您使用即时变体,请首先手动关闭尽可能多的东西。
我相信您列出的所有系统都需要适当的参数才能shutdown
彻底关闭系统并重新启动。检查每个系统上的shutdown(8)
或手册页。shutdown(1m)
仅当系统服务、内核或硬件之一出现错误时,关闭才会失败。即使某些系统服务未能完全停止,大多数操作系统也会强制关闭系统。如果您有内核错误或硬件故障(例如磁盘行为异常),则关闭过程可能会失败。在这种情况下没有太多的追索权:硬件故障通常需要物理干预。 A看门狗如果您在发生硬件故障时需要重新启动系统,可能会有所帮助。
答案2
关闭或重新启动可能“失败”的唯一时间是活动进程拒绝响应,即使SIGKILL
这是关闭/重新启动过程向未及时响应前一个进程的进程发出的SIGTERM
,它向所有剩余的活动进程发出的执行完运行级别 6 或 0 所需的初始化脚本后进行处理,具体取决于您是否调用了shutdown -h
或shutdown -r
(或reboot
)。
几乎唯一发生这种情况的时候是当进程陷入等待无法完成的内核系统调用时(最常见的原因是坏硬件导致驱动程序崩溃,而进程试图从中读取数据) ...但到那时,您几乎需要物理覆盖,因为任何远程访问都必须在系统级别操作,这是内核级别的问题。
当我向一个我无法轻易物理访问的系统发出远程重启命令时,我主要担心的是它可能由于我可能忽略了新内核中的某些东西而无法再次启动,而不是shutdown
或reboot
命令是否能够正确执行。
答案3
正如您可以在 init 手册页上阅读的那样,针对您的具体情况的最佳解决方案是:
# init 6
运行级别
运行级别是系统的软件配置,仅允许选定的一组进程存在。 [...]
运行级别 0、1 和 6 被保留。运行级别 0 用于停止系统,运行级别 6 用于重新启动系统,运行级别 1 用于使系统进入单用户模式。 [...]
有关这方面的更多信息,请参见 shutdown(8) 和 inittab(5) 的联机帮助页。