首页 话题 小组 问答 好文 用户 我的社区 域名交易 唠叨

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

发布于 2024-12-21 21:13:41
0
152

Linux开关机在Linux下,我们常用shutdown、reboot、poweroff、halt等进行关机或重启另外还有就是直接使用init修改循行等级进行,如:init0、init6等各命令的作用...

Linux开关机

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

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

各命令的作用:

reboot重启

可接参数如下:

Rebootthesystem.

--helpShowthishelp

--haltHaltthemachine

-p--poweroffSwitchoffthemachine

--rebootRebootthemachine

-f--forceForceimmediatehalt/power-off/reboot

-w--wtmp-onlyDon'thalt/power-off/reboot,justwritewtmprecord

-d--no-wtmpDon'twritewtmprecord

--no-wallDon'tsendwallmessagebeforehalt/power-off/reboot

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

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

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

关机流程:

1.通知所有运行中的进程:系统将发送SIGTERM信号给所有正在运行的进程,通知它们系统即将关机。

2.停止所有运行中的进程:系统会逐个终止所有正在运行的进程,直到没有剩余进程为止。

3.关闭所有打开的文件:系统会关闭所有打开的文件,确保所有数据都被正确地写入到磁盘中。

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

5.关闭内核:系统会释放内核占用的所有资源,并退出内核运行状态。

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

相似的reboot命令:

systemreboot

shutdown-rnow

init6

shutdown关机

[root@localhost~]#shutdown--help

shutdown[OPTIONS...][TIME][WALL...]

Shutdownthesystem.

--helpShowthishelp

-H--haltHaltthemachine

-P--poweroffPower-offthemachine

-r--rebootRebootthemachine

-hEquivalentto--poweroff,overriddenby--halt

-kDon'thalt/power-off/reboot,justsendwarnings

--no-wallDon'tsendwallmessagebeforehalt/power-off/reboot

-cCancelapendingshutdown

poweroff用于关闭计算机

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

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

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

redhat系的runlevel定义如下:

runlevel0:halt系统停机状态,系统默认运行级别不能设为0,否则不能正常启动

runlevel1:singleuser单用户工作状态,root权限,用于系统维护,禁止远程登陆

runlevel2:multiuserwithoutnetwork多用户状态(没有NFS)

runlevel3:multiuser完全的多用户状态(有NFS),登陆后进入控制台命令行模式

runlevel4:unuse系统未使用,保留

runlevel5:x11X11控制台,登陆后进入图形GUI模式

runlevel6:reboot系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

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

0-Halt

1-Single

2-Fullmulti-userwithdisplaymanager(GUI)

3-Fullmulti-userwithdisplaymanager(GUI)

4-Fullmulti-userwithdisplaymanager(GUI)

5-Fullmulti-userwithdisplaymanager(GUI)

6-Reboot

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

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

因此,我们可以使用init0来执行halt关机,使用init6来执行reboot。

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

问题描述

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

环境:

CentOSStreamrelease8

Linux4.18.0-500.el8.x86_64

systemd239(239-76.el8)

问题解决尝试

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

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

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

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

systemreboot

shutdown-rnow

init6

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

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

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

[Unit]

Description=/etc/rc.d/rc.localCompatibility

ConditionFileIsExecutable=/etc/rc.d/rc.local

After=network.target

[Service]

Type=forking

ExecStart=/etc/rc.d/rc.localstart

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、重新加载

systemctldaemon-reload

这几种命令区别在哪里呢

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

reboot命令OS的动作:

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

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

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

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

评论
一个月内的热帖推荐
电脑助手
Lv.1普通用户

1446

帖子

14

小组

2710

积分

赞助商广告
站长交流