如何重启和关闭 Linux 服务器?

Linux 服务器重启与关机方法详解

作为系统管理员,服务器的重启与关机是日常维护中不可或缺的操作。 这可能是为了执行诸如操作系统补丁之类的定期维护,也可能是因为硬件故障需要关闭系统进行维修。

Linux 系统提供了多种不同的方式来实现服务器的重启或关机。正常运作的系统应该能响应任何命令,而出现问题的服务器可能需要强制重启。请务必注意,由于重启系统属于管理任务,对于运行关键进程的多用户系统或服务器而言,重启或关机可能具有破坏性,因此大多数命令需要超级用户权限或使用 sudo 命令以获取相应权限才能成功执行。

本文将介绍一些可以帮助你执行 Linux 系统重启/关机操作的方法。

图形界面操作

如果你的 Linux 系统使用了图形桌面环境,如 Gnome、KDE、Mate 或 XFCE 等,你通常可以在系统菜单或应用程序菜单中找到一个电源按钮。这个按钮会提供注销、重启、休眠或关机等操作。具体可用选项可能会因所使用的发行版、桌面环境和操作系统版本而略有不同。但你肯定能在菜单中找到与电源相关的设置,以便更改系统的电源状态。

例如,在我的 Ubuntu Mate 桌面环境中,我可以在屏幕右上角的电源菜单中找到关闭选项。

选择“关闭…”选项后,会弹出一个对话框,其中包含多个选项,如暂停、重启、取消和关闭。你可以点击相应的按钮来重启或关闭系统,或者取消操作返回桌面环境。

虽然不同发行版和桌面环境提供的图形界面和选项可能略有差异,但请放心,你总能找到一个可以改变系统电源状态的选项。使用图形界面,只需在电源菜单中点击几下即可完成操作。

使用 systemctl 命令

在以 systemd 作为 init 系统的 Linux 机器上,你可以使用 systemctl 命令来重启设备。

$ sudo systemctl start reboot.target

你也可以直接使用 systemctl 命令及其相关选项,例如重启:

$ sudo systemctl reboot

若要关机,可以使用以下 systemctl 命令:

$ sudo systemctl shutdown

若要停止系统,则使用:

$ sudo systemctl halt

使用 shutdown 命令

shutdown 命令可以用来关闭和重启 Linux 系统。要立即重启系统,请使用:

$ sudo shutdown -r now

或者,在不等待的情况下关闭系统,使用 -h-P 标志:

$ sudo shutdown -P now

我们可以在 shutdown 命令中添加延迟,以便在指定的时间间隔后重启/关闭系统。例如:

$ sudo shutdown -r 10

要在不要求硬件关闭电源的情况下暂停系统,可以使用 -H 标志:

$ sudo shutdown -H now

如果只指定 shutdown 命令,系统将在一分钟后安排关机。若要在特定时间关机,请使用:

$ sudo shutdown 22:30

在许多情况下,当系统出现故障时,它会向登录用户的控制台广播一条消息。如果想在此广播中添加自定义消息,可以将消息与 shutdown 命令一起指定:

$ sudo shutdown 23:00 "Powering off system for maintenance...save your work"

若要取消预定的关机,可以使用 -c 标志:

$ sudo shutdown -c

在某些系统中,shutdown 命令会在后台调用 systemctl 来实现所需的重启/关机操作。

使用 reboot 命令

要优雅地重启系统,你还可以使用 reboot 命令(可能需要使用 sudo)。

$ sudo reboot

若要使用 reboot 命令关闭系统,请使用 -p 标志:

$ sudo reboot -p

要强制重启(对于不响应正常重启命令的系统),可以尝试 -f 标志:

$ sudo reboot -f

使用 halt 命令

要暂停系统,你可以简单地使用 halt 命令:

$ sudo halt

使用 poweroff 命令

要关闭系统,你可以选择使用 poweroff 命令:

$ sudo poweroff

使用 init 命令

对于不在 systemd 上运行的系统,init(或 telinit)命令提供了更改系统运行级别的选项。若要使用 init 重启系统,可以使用:

$ sudo init 6

类似地,要停止系统,可以使用以下 init 命令:

$ sudo init 0

使用 init 调用特定的运行级别会导致系统的 init 进程以特定顺序执行一系列初始化脚本,以确保系统达到所需的运行级别。运行级别 6 定义为重启,而运行级别 0 定义为暂停系统。

使用电源按钮

对于在台式机或笔记本电脑上运行的 Linux 系统,默认情况下,按下电源按钮可以使系统进入睡眠状态或通过发送关机信号将其关闭。你可以从系统的电源设置中调整此选项。但如果正常命令不起作用,它通常应作为最后的选择。

对于运行 Linux 的远程服务器,电源按钮通常会关闭系统电源。然而,位于远程数据中心的用户可以通过各自服务器供应商提供的远程无人值守管理 CLI/GUI 工具来重启或关闭电源。

使用 Alt + SysRq 组合键

对于无响应或冻结的系统,很难使其进入重启或关机状态。当你没有其他选择并且作为最后的手段时,可以尝试按 Alt + PrintScreen + 一系列键来立即重启系统。这可能不是首选或推荐的选项,但可以作为最后的手段使用。

永远记住,使用此方法可能会导致数据丢失和损坏,就像任何其他非正常、强制重启或关机选项一样。请务必遵循备份和冗余的最佳实践,并在使用此选项时要小心。

要使此选项起作用,它应该已在 Linux 内核中启用。可以使用以下命令进行检查:

$ cat /proc/sys/kernel/sysrq

输出 1 表示其完全启用,而大于 1 的数字表示部分启用某些功能。若要显式启用它,可以使用:

$ sudo echo “1” > /proc/sys/kernel/sysrq

要使用此方法重启系统,请按住 Alt + SysRq (PrintScreen),然后在每个键之间间隔几秒钟后依次按以下键:

R E I S U B

或在最后按 O 而不是 B 来关机:

R E I S U O

以下是这些按键的含义:

  • R:将键盘从原始模式切换到 XLATE 模式
  • E:向除init以外的所有进程发送SIGTERM信号
  • I:向除init以外的所有进程发送SIGKILL信号
  • S:同步所有挂载的文件系统
  • U:将所有已挂载的文件系统重新挂载为只读

最后,B 或 O 的含义如下:

  • B:立即重启系统,不卸载分区或同步

或者

  • O:立即关闭系统,不卸载分区或同步

总结

以上介绍了多种重启或关闭 Linux 系统的方法。从简单的图形界面操作到相对复杂的终端命令,你可以选择适合你的方法。对于由于某种原因而死机的系统,我们也讨论了强制重启或关机的方法,虽然这不是理想的方式,但在极少数情况下是必要的。

在使用本文中讨论的命令时务必谨慎,因为它们会影响系统的状态,并且在企业服务器环境中可能会影响多个用户和服务。请务必查看本文中建议的命令手册页,以了解更多信息及其提供的各种选项。

在此处了解如何配置 WAS 以在关机期间停止询问密码。