原文网址:Linux命令--重启系统的方法_IT利刃出鞘的博客-CSDN博客
本文介绍Linux重启系统的方法。
reboot的工作过程跟下边的halt差不多,不过它是引发主机重启,而halt是关机。它的参数与halt相差不多。
简介
shutdown命令安全地将系统关机。 有些用户会使用直接断掉电源的方式来关闭linux,这是十分危险的。因为linux与windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失﹐使系统处于不稳定的状态﹐甚至在有的系统中会损坏硬件设备。而在系统关机前使用shutdown命令﹐系统管理员会通知所有登录的用户系统将要关闭。并且login指令会被冻结﹐即新的用户不能再登录。直接关机或者延迟一定的时间才关机都是可能的﹐还可能重启。这是由所有进程〔process〕都会收到系统所送达的信号〔signal〕决定的。这让像vi之类的程序有时间储存目前正在编辑的文档﹐而像处理邮件〔mail〕和新闻〔news〕的程序则可以正常地离开等等。
shutdown的工作是送信号〔signal〕给init程序,要求它改变runlevel。
Runlevel 0被用来停机〔halt〕,runlevel 6是用来重新激活〔reboot〕系统﹐而runlevel 1则是被用来让系统进入管理工作可以进行的状态﹔这是预设的﹐假定没有-h也没有-r参数给shutdown。要想了解在停机〔halt〕或者重新开机〔reboot〕过程中做了哪些动作﹐你可以在这个文件/etc/inittab里看到这些runlevels相关的资料。
使用示例
shutdown 参数
简介
halt:关机但是不关闭电源,需要手动关闭电源(加p参数会关闭电源)。
若系统的run level在0-6中,则关闭系统,否则调用shutdown -h来取代。
halt执行时,杀死应用进程,执行sync系统调用,文件系统写操作完成后会停止内核。
注意:云服务器尽量不要用此命令,因为运行后,它长时间处于正在关机状态。建议使用shutdown -h,可以比较快的关机。
示例
halt #立即停止系统,需要人工关闭电源
参数
简介
init是所有进程的祖先﹐它的进程号始终为1﹐所以发送TERM信号给init会终止所有的 用户进程﹑守护进程等。shutdown 就是使用这种机制。
示例
init 6 #重启
启动级别(run level)
init 0,1,2,3,4,5,6
简介
实际生产环境中某些情况下 Linux 服务器系统在出现致命错误需要远程进行重启,通过常规的 reboot、init 6 等方法无法正常重启(例如重启时卡在驱动程序里等情况),这时就需要通过下面介绍的几种特殊的方法进行强制重启。
下面这些强制重启 Linux 的方法都是直接跳过 umount 文件系统及 sync 等操作,可能导致数据损坏,不在特殊情况下请勿使用。另外当然这些都是需要 root 超级用户权限的。
reboot -nf
magic SysRq key 通过 proc 接口提供用户直接发底层命令给 kernel 的功能,可以实现关机、重启、宕机等操作,Linux kernel 需要开启 CONFIG_MAGIC_SYSRQ 才可以支持 magic SysRq key。
强制重启系统:
echo 1 > /proc/sys/kernel/sysrq
echo b > /proc/sysrq-trigger
强制关闭系统:
echo 1 > /proc/sys/kernel/sysrq
echo o > /proc/sysrq-trigger
在x86平台上,组合键”
'b' —— 将会立即重启系统,并且不会管你有没有数据没有写回磁盘,也不卸载磁盘,而是完完全全的立即关机
'o' —— 将会关机
's' —— 将会同步所有以挂在的文件系统
'u' —— 将会重新将所有的文件系统挂在为只读属性
如果 Linux kernel 未开启 magic SysRq key 或者不起作用,可以尝试使用 watchdog 重启方法。watchdog 通过监控数据输入是否正常可以实现在系统出现异常时自动重启系统,这里我们刚好可以借用的。
首先需要加载 watchdog 支持,这个和主板硬件设备有关,如果只需要软件模拟的,可以依次运行:
modprobe softdog
cat /dev/watchdog
运行完第二条命令会马上退出并报错,同时系统日志中就会提示:
softdog: Unexpected close, not stopping watchdog!
这就表示 watchdog 设备是被意外关闭的而不是正常停止的,大约等待 60 秒之后你就会发现 Linux 系统自动重启了。Linux watchdog 的异常等待时间是通过 /proc/sys/kernel/watchdog_thresh 设置的,一般默认为 60 秒。
上面几种方法都不能用?如果你的主板刚好支持 IPMI 管理接口的话,那可以直接通过 IPMI 实现硬件上的强制关机或重启。
首先加载 IPMI 支持
modprobe ipmi_msghandler ipmi_devintf ipmi_si
确认 IPMI 设备是否已找到
ls -l /dev/ipmi*
如果输出正常的话表示 IPMI 被正确加载了,接着安装 ipmitool 管理工具。ipmitool 可以通过 IPMI 接口完成对本机或远程主机的一系列管理操作。
这里我们就用直接电源管理的,重启系统:
ipmitool power reset
运行完成后主机就会马上重启,相应的关闭主机可以运行命令:
ipmitool power off
ipmitool 还可以实现在系统未启动时远程查看监控主板硬件状态等功能