Linux系统下的重启,关机命令以及reboot挂死问题解决方案

Linux开关机

在Linux下,我们常用 shutdown、reboot、poweroff、halt等进行关机或重启

另外还有就是直接使用 init 修改循行等级进行,如:init 0、init 6等

各命令的作用:

reboot 重启

可接参数如下:

Reboot the system.

     --help      Show this help
     --halt      Halt the machine
  -p --poweroff  Switch off the machine   
     --reboot    Reboot the machine
  -f --force     Force immediate halt/power-off/reboot  
  -w --wtmp-only Don't halt/power-off/reboot, just write wtmp record
  -d --no-wtmp   Don't write wtmp record
     --no-wall   Don't send wall message before halt/power-off/reboot

这里主要讲一下`reboot -f`,强制重启

在使用`reboot`这个命令过程中,有在CentOS8.2系统中遇到reboot挂死,约等待

30mins才能关机然后重新启动,后来修改命令为`reboot -f`之后,问题解决

关机流程:

  • 1.通知所有运行中的进程:系统将发送SIGTERM信号给所有正在运行的进程,通知它们系统即将关机。
  • 2.停止所有运行中的进程:系统会逐个终止所有正在运行的进程,直到没有剩余进程为止。
  • 3.关闭所有打开的文件:系统会关闭所有打开的文件,确保所有数据都被正确地写入到磁盘中。
  • 4.停止所有设备:系统会停止所有设备的运行,包括磁盘、网络设备和其他硬件设备。
  • 5.关闭内核:系统会释放内核占用的所有资源,并退出内核运行状态。
  • 6.重启计算机:系统会发送一个重启指令给计算机,计算机将重新启动,并加载操作系统。

相似的reboot命令:

system reboot
shutdown -r now
init 6

shutdown 关机

[root@localhost ~]# shutdown --help
shutdown [OPTIONS...] [TIME] [WALL...]

Shut down the system.

     --help      Show this help
  -H --halt      Halt the machine
  -P --poweroff  Power-off the machine
  -r --reboot    Reboot the machine
  -h             Equivalent to --poweroff, overridden by --halt
  -k             Don't halt/power-off/reboot, just send warnings
     --no-wall   Don't send wall message before halt/power-off/reboot
  -c             Cancel a pending shutdown

poweroff 用于关闭计算机

halt 用于关闭计算机或进入停机状态,有些系统是调用shutdown -h 或poweroff

再深入了解一下系统运行等级的差别:

首先明确一下linux/redhat系的runlevel运行级别和debian系的runlevel是有所不同的。

redhat系的runlevel定义如下:

  • runlevel 0: halt 系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
  • runlevel 1: single user 单用户工作状态,root权限,用于系统维护,禁止远程登陆
  • runlevel 2: multiuser without network 多用户状态(没有NFS)
  • runlevel 3: multiuser 完全的多用户状态(有NFS),登陆后进入控制台命令行模式
  • runlevel 4: unuse 系统未使用,保留
  • runlevel 5: x11 X11控制台,登陆后进入图形GUI模式
  • runlevel 6: reboot 系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

在debian/ubuntu中,runlevel的定义为:

0 - Halt
1 - Single
2 - Full multi-user with display manager (GUI)
3 - Full multi-user with display manager (GUI)
4 - Full multi-user with display manager (GUI)
5 - Full multi-user with display manager (GUI)
6 - Reboot

可以发现2~5级是没有任何区别的。

Ubuntu系统默认的运行级别为2。

因此,我们可以使用init 0来执行halt关机,使用init 6来执行reboot。

其实shutdown命令也是在执行完一系列操作后,比如说逐个关闭进程/服务,调用sync将数据写入磁盘等,然后调用init0或init6来执行关机或重启而halt实际上是调用shutdown -h now,可以不理会系统当前状态而直接关机,但在有的系统中,halt不会关闭电源,而只关闭了os。

问题描述

reboot 发生挂死,reboot关机时卡了近半个小时,才能关机下去,重启上电流程无异常。

环境:

CentOS Stream release 8
Linux 4.18.0-500.el8.x86_64
systemd 239 (239-76.el8)

问题解决尝试

首先当然从系统入手,我查询了/var/log/messages上面记录的内容,发现没什么错误信息

先没有计较太多,我直接使用yum update更新了一下我的系统,再次尝试

1,百度寻医问药,修改/etc/systemd/system.conf ,修改系统参数,但是并未有改善,此方案不适用我这边的状况

2,尝试其他的reboot方案,都会发生挂死,命令如下:

system reboot
shutdown -r now
init 6

3,最后尝试使用reboot -f,此时系统reboot 正常,并未发现重启挂死的状况

20230914 解决了reboot关机卡死状况,解决办法如下:

1、新建/etc/systemd/system/rc-local.service并写入

	[Unit]
	Description=/etc/rc.d/rc.local Compatibility
	ConditionFileIsExecutable=/etc/rc.d/rc.local
	After=network.target
	[Service]
	Type=forking
	ExecStart=/etc/rc.d/rc.local start
	TimeoutSec=5
	RemainAfterExit=yes

2、备份/etc/systemd/system.conf

cp -a /etc/systemd/system.conf /etc/systemd/system.conf_bak

3、修改文件

sed -i 's/#DefaultTimeoutStopSec=90s/DefaultTimeoutStopSec=30s/g' /etc/systemd/system.conf

4、重新加载

systemctl daemon-reload

这几种命令区别在哪里呢

目前仅仅知道 reboot -f 会 强制重新开机,不调用shutdown指令的功能,看起来跟普通的重启动作是不同的,或许会发生数据丢失的状况,从描述来看,少做了很多动作。

reboot命令OS的动作:

1、结束所有运行中的进程:系统会发送SIGTERM信号给所有正在运行的进程,通知它们系统即将重启。

2、保存当前系统状态:系统会将当前系统的状态保存到/var/log/wtmp文件中,包括系统的运行时间、用户登录信息等。

3、停止所有设备:系统会停止所有设备的运行,包括磁盘、网络设备和其他硬件设备。

4、重启计算机:系统会发送一个重启指令给计算机,计算机将重新启动,并加载操作系统

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持恩蓝小号。

原创文章,作者:TARLX,如若转载,请注明出处:http://www.wangzhanshi.com/n/19660.html

(0)
TARLX的头像TARLX
上一篇 2025年2月24日 07:38:07
下一篇 2025年2月24日 07:38:09

相关推荐

  • 详解Linux 查看服务器开放的端口号

    在讨论这个问题前,我们先来了解一下物理端口、逻辑端口、端口号等计算机概念。 端口相关的概念: 在网络技术中,端口(Port)包括逻辑端口和物理端口两种类型。物理端口指的是物理存在的…

    2025年1月1日
  • linux Ubuntu下SSH无密码验证配置的方法步骤

    前言 SSH为Secure Shell 的缩写,是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。越来越多的小伙伴们使用远程登录,而ssh安全性无疑是很高的,那么我们现…

    Linux 2025年1月1日
  • 浅谈linux线程切换问题

    处理器总处于以下状态中的一种: 1、内核态,运行于进程上下文,内核代表进程运行于内核空间; 2、内核态,运行于中断上下文,内核代表硬件运行于内核空间; 3、用户态,运行于用户空间;…

    Linux 2025年1月1日
  • 详解在Linux系统中如何识别和解决端口占用问题

    引言 在日常的 Linux 系统管理和开发过程中,端口占用是一个常见且令人头疼的问题。无论是部署新服务、调试应用程序,还是进行系统维护,遇到端口被占用都可能导致服务无法正…

    2025年2月24日
  • linux ss命令详解

    ss 是 socket statistics 的缩写。ss 命令可以用来获取 socket 统计信息,它显示的内容和 netstat 类似。但 ss 的优势在于它能够显示更多更详细…

    2025年1月1日
  • Vim中文件编码处理与重新打开乱码文件详解

    前言 vim 中有两个与编码有关的变量,如果理解了基本就不会再为编码问题头疼了。 encoding  :vim 内部编码,例如 buffer、寄存器、文本等。这个值一般用户不要设置…

    2025年1月1日
  • Linux网络配置和监控命令总结

    一、查看网络配置 1. ifconfig 命令 – 查看网络接口信息 ifconfig #查看所有活动的网络接口信息 ifconfig “网络接口” #查看指定的网络接…

    Linux 2024年12月17日
  • 详解linux usb host驱动编写入门

    usb协议是一个复杂的协议,目前涉及到的版本就有usb1.0, usb2.0, usb3.0。大家如果打开kernel usb host目录,就会发现下面包含了ohci,uhci,…

    Linux 2025年1月1日
  • Linux下编译安装python3步骤

    Linux下默认系统自带python2.6的版本,这个版本被系统很多程序所依赖,所以不建议删除,如果使用最新的Python3那么我们知道编译安装源码包和系统默认包之间是没有任何影响…

    2025年1月1日
  • 关于Linux本地虚拟机ping不通,未知的名称或服务已解决

    一、先在本地检查本机ip和网关跟vm中的虚拟网卡是否正确 本机cmd检查无线局域网的网关和本机ip 输入 ipconfig 检查上述中的俩个默认网关是否一致,比如下方网关是192.…

    2024年12月17日

发表回复

登录后才能评论