除了升级内核之外,Linux系统还有哪些改动需要重启?我知道在某些情况下重新启动会让事情变得更容易,但是有没有除了重新启动之外无法完成的情况?
澄清一下:我正在考虑一个没有遭受硬件故障的典型桌面或服务器系统。
答案1
我想到了一些事情:
从一个恢复内核恐慌
根据定义,如果不重新启动内核就无法恢复内核恐慌。
从无法访问终端的挂起中恢复
如果系统没有响应,并且您无法发出恢复命令,那么您唯一能做的就是重新启动。通常,您希望避免手动重启电源。对于这些情况,Linux 内核有魔法系统请求支持可用于在紧急情况下重新启动机器。
只要
CONFIG_MAGIC_SYSRQ
在内核配置中启用了该选项,并且kernel.sysrq
sysctl
选项启用后,您可以使用神奇的 SysRq 组合键直接向内核发出命令:注意下面的Alt+SysRq表示按住 Alt, 然后按下并按住不动 SysRq(通常是PrintScrn钥匙)。
- Alt+ SysRq+ r: 重新控制键盘
- Alt+ SysRq+ e:发送
SIGTERM
到除 之外的所有进程init
,让它们有机会正常终止 - Alt+ SysRq+ i: 发送
SIGKILL
到除 之外的所有进程init
,强制它们终止 - Alt+ SysRq+ s: 尝试同步所有已挂载的文件系统
- Alt+ SysRq+ u: 重新挂载所有文件系统为只读
Alt+ SysRq+ b: 重新启动,或者
Alt+ SysRq+ o: 关机
用于尝试正常重启的神奇 SysRq 组合键的助记符是:
”右电子引导 乙文 我F S系统 U特利 乙罗克”
对于无头服务器,甚至还有一个iptables 目标通过网络启用远程 SysRq 序列。
从无法启动状态恢复
如果系统已经进入无法正常启动的状态(例如,由于系统升级失败、文件系统损坏等),那么访问系统上的恢复控制台的唯一方法可能是重新启动使用适当的启动时间选项。
更改启动时内核参数
一些内核参数(例如
audit
启用/禁用内核审核)只能在引导时加载内核时进行设置。
答案2
有两次我可以想到我想在哪里重新启动:
当我需要确保系统可以在正确的状态下启动时。
我曾经在一个系统上工作,该系统在运行时配置了一些守护进程。它运行了几年后,电源故障导致它重新启动,但守护进程并不是启动过程的一部分,而且没有人知道几年前它是如何配置的。系统停机了好几天,而我们正在研究如何重新配置它。
实际上,重新启动是确定系统在断电后能否正常重新启动的唯一方法。
当系统库更新时。
假设在与系统上许多应用程序/服务器共享的库中发现了一个重大安全缺陷。您可以在不重新启动的情况下更新库,但是有多少进程仍在运行且加载了不安全的库?您可以使用旧库煞费苦心地重新启动任何内容(如果您能弄清楚的话),但这很容易出错,并且可能需要比重新启动更长的时间。
重新启动是确保所有正在运行的进程不再使用旧的、有缺陷的库的最佳方法。
答案3
如果您的意思是软件配置中的计划更改并假设硬件工作正常(我还没有见过)和无错误的软件(您知道......),那么只有内核或驱动程序中的错误才会迫使您重启。 :)
除此之外......我不确定是否可以在init
不切换到单用户模式并执行一些魔法的情况下进行替换,这与重新启动本质上没有太大区别。