当前位置:

首页 > 系统应用 > Linux系统怎么重启和关机 常用shutdown命令

Linux系统怎么重启和关机 常用shutdown命令

Linux系统的重启和关机,看似基础,实则暗藏玄机。一个核心原则是:首选 shutdown 命令。这并非因为它“最酷”,而是因为它遵循了完整的系统关闭流程——通知所有登录用户、冻结新的登录请求、并安全地终止服务。相比之下,直接使用 reboot 或 poweroff 在生产环境中,无异于埋下了一颗定

Linux系统的重启和关机,看似基础,实则暗藏玄机。一个核心原则是:首选 shutdown 命令。这并非因为它“最酷”,而是因为它遵循了完整的系统关闭流程——通知所有登录用户、冻结新的登录请求、并安全地终止服务。相比之下,直接使用 reboot 或 poweroff 在生产环境中,无异于埋下了一颗定时冲击波。

linux系统怎么重启和关机 常用shutdown命令

什么时候必须用 shutdown -r now 而不是 reboot

当系统需要确保所有服务都能被有序停止时,比如等待数据库写完最后的日志、NFS客户端完成卸载,同时让其他在线用户看到明确的系统提示,shutdown -r now 就是唯一可靠的选择。

而 reboot 命令的行为,其实取决于系统是否启用了 systemd。在旧的 SysV init 系统上,它通常会调用 shutdown -r now;但在某些极简镜像或容器环境中,reboot 可能会直接触发内核重启,从而跳过所有用户空间的服务清理步骤。

这里有几个关键点:

  • shutdown -r now 总是走标准关机流程,向 init 或 systemd 发送信号,并切换到运行级别 6。
  • reboot 不带参数时,在大多数现代发行版(如 CentOS 7+、Ubuntu 16.04+、Debian 8+)中等价于 shutdown -r now。但一旦加上 -f 参数,它就变成了强制重启,不再等待服务退出。
  • 一个实用的排查技巧:在远程管理服务器时,如果执行 reboot 后 SSH 连接瞬间断开,却没有收到任何关机广播消息,这就可能意味着它绕过了通知机制。此时,应该检查 systemctl is-system-running 来确认它是否真的走了标准路径。

shutdown -h now 和 poweroff 的实际差异

表面上看,两者都能关机,但底层行为有细微差别。shutdown -h now 执行的是完整的关机流程:同步数据、终止进程、卸载文件系统,最后切断电源。poweroff 则是一个独立命令,在多数情况下,它只是 shutdown -h now 的一个符号链接或快捷方式。

然而,在某些嵌入式系统或 initramfs 环境中,poweroff 命令可能会直接调用 poweroff(2) 系统调用,从而跳过用户空间的清理步骤。

因此,最佳实践是:

  • 生产服务器一律使用 shutdown -h now,以避免因发行版定制导致命令行为漂移。
  • poweroff 更适合在脚本中快速调用,前提是你已经确认目标系统对其做了标准实现(可以通过 ls -l $(which poweroff) 查看它是否指向 shutdown)。
  • 如果遇到执行 shutdown -h now 后,机器卡在 “Power down” 提示且风扇不停的情况,这可能是内核未能正确响应 ACPI 指令。此时可以尝试 shutdown -h -P now,其中 -P 是 POSIX 标准选项,用于显式要求关闭电源。

计划重启/关机时,时间参数怎么写才不出错

shutdown 命令的时间参数格式容易让人误解:它不接受任意的字符串格式,只识别两种模式——绝对时间和相对时间,并且对空格、冒号、加号非常敏感。

  • shutdown -r 20:35:合法,表示在今天 20:35 重启。但如果当前时间已经是 20:40,它会默认延迟到明天的同一时间。
  • shutdown -r +10:合法,表示 10 分钟后重启。注意,+ 号和数字之间不能有空格,写成 + 10 会导致报错:Usage: shutdown [OPTIONS...] [TIME] [WALL...]。
  • shutdown -r 10:30:45:非法。shutdown 不解析秒级精度,会被当作无效时间忽略。
  • 当需要附带广播消息时,消息必须放在时间参数之后,并且整个消息要用引号包裹,例如:shutdown -r +5 "DB backup done, rebooting"。漏掉引号会导致 shell 把空格后的内容当作额外参数,从而报错 Unknown option。

误操作后如何取消正在运行的 shutdown 计划

只要 shutdown 命令还没有进入最终阶段(即尚未开始卸载文件系统),就可以使用 shutdown -c 来中止计划。但需要注意的是,这个命令本身执行成功后不会输出任何提示,因此需要手动验证是否真的取消了。

  • 执行 shutdown -c 后,应立即运行 who -u 或 loginctl list-sessions,确认没有残留的 “shutdown” 相关进程。
  • 如果之前使用的是 -k 参数(仅发送警告而不真正关机),那么 shutdown -c 是无效的,因为这根本不是计划任务,只是广播了一条消息。
  • 在 systemd 系统中,还可以检查 systemctl list-timers --all | grep shutdown,确认相关的定时器已被清除。

说到底,真正的麻烦往往不是记不住命令,而是误以为 reboot 和 shutdown -r now 完全等价。在绝大多数桌面环境中,它们表现确实一致。但在金融、电信这类关键业务服务器上,一次跳过了服务优雅终止的重启,就可能导致数据库页损坏或 NFS 锁堆积。为了系统稳定,别省那几秒钟敲命令的时间。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
作者最新文章
系统应用
相关文章 更多
Linux系统如何配置静态ARP绑定 防止局域网ARP欺骗攻击【教程】
Linux系统如何配置静态ARP绑定 防止局域网ARP欺骗攻击【教程】

直接敲个sudo arp -s就能绑定IP和MAC,这事儿谁都会。但问题在于,这操作只管当前这一次,机器一重启,绑定就没了。真要防住ARP欺骗,得让这个绑定在重启后依然坚挺,并且还得配合内核层面的防护和验证机制,才算把漏洞堵严实了。 用 arp -s 添加静态ARP条目 这是最基础的一步,命令格式固

Linux系统swap分区怎么增加?解决内存不足死机问题【教程】
Linux系统swap分区怎么增加?解决内存不足死机问题【教程】

Linux系统跑着跑着突然卡成幻灯片,甚至直接死机?这多半是物理内存(RAM)告急,而Swap空间又没起到缓冲作用。Swap,你可以把它理解成内存的“应急仓库”,当物理内存不够用时,系统会把一些暂时不用的数据挪到这里,给紧急任务腾出地方。如果这个仓库太小或者压根没开,系统自然就容易“撑死”。 别担心

Linux系统查看TCP连接状态分布 统计命令汇总
Linux系统查看TCP连接状态分布 统计命令汇总

排查网络问题、监控服务状态,或者做容量规划时,一个绕不开的环节就是查看TCP连接的状态分布。哪些连接还活跃着,哪些正在挥手告别,哪些在排队等待,这些数字背后往往藏着性能瓶颈的线索。今天,我们就来聊聊,在Linux系统下,用什么命令来统计这些状态最稳、最快、也最准。 查 TCP 各状态连接数用什么命令

Linux系统僵尸进程怎么清理?彻底解决无法kill掉的进程【详解】
Linux系统僵尸进程怎么清理?彻底解决无法kill掉的进程【详解】

僵尸进程,状态标识为Z,是已经执行完毕、只在内核中留下一个待回收表项的“空壳”。直接对它使用kill -9是无效的,正确的清理思路要么是终止其父进程,要么是在父进程代码中通过处理SIGCHLD信号并调用waitpid来主动回收。 怎么确认进程是不是僵尸(Z状态) 识别僵尸进程其实很简单。在ps或to

Linux系统查看磁盘UUID信息 blkid命令使用方法
Linux系统查看磁盘UUID信息 blkid命令使用方法

Linux系统查看磁盘UUID信息:blkid命令使用方法 在Linux系统里管理磁盘,UUID是个绕不开的关键标识。它比传统的设备名(比如/dev/sda1)更稳定,不会因为硬盘插拔顺序改变而“漂移”。但有时候,你信心满满地敲下blkid,却发现它要么沉默不语,要么给出的信息和预期对不上。别急,这

Linux系统怎么查看服务启动失败的原因 journalctl排查技巧
Linux系统怎么查看服务启动失败的原因 journalctl排查技巧

Linux服务启动失败?别慌,journalctl排查技巧全解析 服务启动失败,是运维工作中最常遇到的“老朋友”。一个核心技巧是:直接运行 journalctl -u 服务名 -n 50 -e,90%的问题根源就藏在最后那几行日志里。 这相当于直接翻到故障剧本的最后一页,往往答案就在那里。但有时候,

Linux系统查看硬件配置信息 常用命令汇总【教程】
Linux系统查看硬件配置信息 常用命令汇总【教程】

Linux系统硬件信息查看:四条命令覆盖九成日常场景 想快速摸清一台Linux服务器的硬件底细?其实不必翻箱倒柜找文档。日常工作中,九成以上的硬件信息查询需求,靠下面这四条命令就能搞定。其余的,大多属于特定场景下的补漏方案,或是权限不足时的替代选择。 lscpu、free -h、lsblk、lspc

教你如何在Linux系统中使用Nginx进行日志切割和保存
教你如何在Linux系统中使用Nginx进行日志切割和保存

当涉及到Nginx日志切割和保存时,可以使用logrotate工具。下面是一个简单的教程来帮助您实现这一目标:首先,确保您已经安装了logrotate工具。在大多数Linux发行版上,可以使用以下命令进行安装:sudoapt-getinstalllogrotate#Debian/Ubuntusudoyuminstalllogrotate#CentOS/RHEL创建一个用于Nginx日志的配置文件。在终端中,使用文本编辑器(如vi或nano)创建一个新文件,例如nginx-logrotate.conf:su

在Linux系统上安装Go语言的完整步骤
在Linux系统上安装Go语言的完整步骤

在Linux系统上安装Go语言是非常简单的,只需要几个简单的步骤就可以完成。Go语言是一种由Google开发的开源编程语言,被广泛应用于云计算和大数据领域。在Linux系统上安装Go语言会为开发人员提供更多的选择和灵活性,本文将详细介绍如何在Linux系统上安装Go语言,并提供具体的代码示例。步骤一:下载Go语言安装包首先,我们需要下载Go语言的安装包。你可

探究Go语言在Linux系统的适用性
探究Go语言在Linux系统的适用性

Go语言作为一种高效的编程语言,其在构建各种应用程序时展现了出色的性能和可靠性。与此同时,Linux系统作为一种稳定且广泛应用的操作系统,在服务器端和嵌入式设备中得到了广泛应用。本文将探讨Go语言与Linux系统之间的兼容性,并给出一些具体的代码示例来阐述两者之间的无缝集成。首先,Go语言对于不同平台的兼容性十分出色,包括Linux系统。Go语言的编译器能够

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

PDF教程
PDF教程

正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

Mac软件 更多
Postman macOS版
Postman macOS版
Mac

Postman是一套面向API全生命周期的开发与测试平台,可在Mac上发送和调试多种协议请求,管理集合、环境及认证信息,并完成脚本测试、模拟服务、监控、文档发布和团队协作。它适合开发、测试及运维人员使用,提供个人免费方案。

Docker Desktop macOS版
Docker Desktop macOS版
Mac

Docker Desktop 是 Docker 官方为 Mac 提供的容器开发环境,集成 Docker Engine、命令行工具、Compose、Build、Kubernetes 与图形化管理界面。

Android Studio macOS版
Android Studio macOS版
Mac

Android Studio 是 Google 面向安卓应用开发提供的官方集成开发环境,基于 IntelliJ IDEA 构建。它整合智能代码编辑、Gradle 构建、界面预览、设备模拟、性能分析、调试测试及 APK 分析等工具。

WINDOWS 更多
PixPix 网页版
PixPix 网页版
Windows

PixPix 是面向品牌、卖家和内容团队的在线 AI 图片视频创作平台,提供图视频 Agent、无限画布、图片生成、视频生成、自然语言编辑及商品套图、产品精修和带货视频等电商工具。

Postman Windows版
Postman Windows版
Windows

Postman 是面向 API 全生命周期的开发与协作平台。Windows 桌面版可用于构建和发送 HTTP、GraphQL、gRPC、WebSocket、MQTT 等请求,并提供环境变量、集合、脚本测试、模拟服务、监控、文档及团队工作区等

Docker Desktop Windows版
Docker Desktop Windows版
Windows

Docker Desktop 为 Windows 开发者提供集成式容器环境,内置 Docker Engine、命令行工具、Compose、Build 与 Kubernetes 等组件,可在本机完成镜像构建、容器运行、日志查看和资源管理。