强制重启Linux系统的几种方法
实际生产环境中某些情况下 Linux 服务器系统在出现致命错误需要远程进行重启,通过常规的 reboot、init 6 等方法无法正常重启(例如重启时卡在驱动程序里等情况),这时就需要通过下面介绍的几种特殊的方法进行强制重启。
注意
下面这些强制重启 Linux 的方法都是直接跳过 umount 文件系统及 sync 等操作,可能导致数据损坏,不在特殊情况下请勿使用。另外当然这些都是需要 root 超级用户权限的哦。
reboot 命令
直接通过运行 reboot -nf 命令,这样重启时可以指定跳过 init 的处理和 sync 操作,这样可以避免大多数情况下的问题。
magic SysRq key 方法
magic SysRq key 通过 proc 接口提供用户直接发底层命令给 kernel 的功能,可以实现关机、重启、宕机等操作,Linux kernel 需要开启 CONFIG_MAGIC_SYSRQ 才可以支持 magic SysRq key。
运行下面两条命令就可以直接强制重启系统:
|
1
2
|
[root@localhost ~]# echo 1 > /proc/sys/kernel/sysrq[root@localhost ~]# echo b > /proc/sysrq-trigger |
相应的直接强制关机的命令:
|
1
2
|
[root@localhost ~]# echo 1 > /proc/sys/kernel/sysrq[root@localhost ~]# echo o > /proc/sysrq-trigger |
watchdog 方法
如果 Linux kernel 未开启 magic SysRq key 或者不起作用,可以尝试使用 watchdog 重启方法。watchdog 通过监控数据输入是否正常可以实现在系统出现异常时自动重启系统,这里我们刚好可以借用的。
首先需要加载 watchdog 支持,这个和主板硬件设备有关,如果只需要软件模拟的,可以运行:
|
1
|
[root@localhost ~]# modprobe softdog |
命令加载软件 watchdog 支持,接着再运行:
|
1
|
[root@localhost ~]# cat /dev/watchdog |
命令,该命令会马上退出并报错,同时系统日志中就会提示:
|
1
|
softdog: Unexpected close, not stopping watchdog! |
这就表示 watchdog 设备是被意外关闭的而不是正常停止的,大约等待 60 秒之后你就会发现 Linux 系统自动重启了。Linux watchdog 的异常等待时间是通过 /proc/sys/kernel/watchdog_thresh 设置的,一般默认为 60 秒。
IPMI 方法
上面几种方法都不能用?如果你的主板刚好支持 IPMI 管理接口的话,那可以直接通过 IPMI 实现硬件上的强制关机或重启。
首先加载 IPMI 支持:
|
1
|
[root@localhost ~]# modprobe ipmi_msghandler ipmi_devintf ipmi_si |
确认 IPMI 设备是否已找到:
|
1
|
[root@localhost ~]# ls -l /dev/ipmi* |
如果输出正常的话表示 IPMI 被正确加载了,接着安装 ipmitool 管理工具。ipmitool 可以通过 IPMI 接口完成对本机或远程主机的一系列管理操作。
这里我们就用直接电源管理的,重启系统:
|
1
|
[root@localhost ~]# ipmitool power reset |
运行完成后主机就会马上重启,相应的关闭主机可以运行命令:
|
1
|
[root@localhost ~]# ipmitool power off |
ipmitool 还可以实现在系统未启动时远程查看监控主板硬件状态等功能,在 IPMI 可用的情况下 ipmitool 还是比较方便好用的。
强制重启Linux系统的几种方法的更多相关文章
- 远程重启linux主机的几种方法
方法一,在终端上利用ssh,不登录远程主机,直接发送重启命令 ssh root@192.168.8.128 'reboot' 方法二,在终端上利用ssh和here document ssh root@ ...
- linux安装IPython四种方法
IPython是Python的交互式Shell,提供了代码自动补完,自动缩进,高亮显示,执行Shell命令等非常有用的特性.特别是它的代码补完功能,例如:在输入zlib.之后按下Tab键,IPytho ...
- linux 时间同步的2种方法(转)
linux 时间同步的2种方法 张映 发表于 2012-10-23 分类目录: 服务器相关 标签:linux, ntp, 同步, 时间服务器 由于硬件的原因,机器或多或少的根标准时间对不上,一个月的误 ...
- Linux系统中安装软件方法总结
Linux系统中安装软件方法总结 [1]Linux系统中安装软件的几种方式 [2] Linux配置yum源(本地源和网络源) [3] SuSE下zypper源配置 [4] SUSE zypper 本地 ...
- linux系统ecshop拿shell方法
Title:linux系统ecshop拿shell方法 --2011-06-08 13:23 最近弄一个站,对ECSHOP拿shell不了解,导致走了很多的弯路. nginx/0.8.54的服务器, ...
- python执行linux命令的两种方法
python执行linux命令有两种方法: 在此以Linux常用的ls命令为例: 方法一:使用os模块 1 2 3 shell# python >> import os >> ...
- Ubuntu,CenOS等Linux系统更改环境变量方法,以安装anaconda为例
[环境配置的原因] 在windows系统下,很多软件的安装都需要设置环境变量,比如安装JAVA JDK.如果不安装环境变量,在非软件安装的目录下运行javac命令,将会报告"找不到文件&qu ...
- linux 时间同步的2种方法
转载自: http://blog.51yip.com/server/1474.html 由于硬件的原因,机器或多或少的根标准时间对不上,一个月的误差几秒到几分钟不等.对于服务器来说时间不准,会有很多麻 ...
- linux系统的7种运行级别
Linux系统有7个运行级别(runlevel)运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆运行级别2:多 ...
随机推荐
- GDOI2018前夕 错误总结
算法易错点 $FFT$ 1.注意精度,以及是否取整 2.注意$complex$类不要写错,复数乘法是这样的: complex operator *(const complex &b){retu ...
- windows杀死进程netstat
1.找到端口被占用情况 netstat -aon|findstr "9050" 协议 本地地址 外部地址 ...
- 合理使用webpack提高开发效率
虽然公司有提供现成的脚手架工具,但是作为开发人员懂得必要的相关知识还是很重要的.这样有利于提高我们的开发效率,优化我们的代码. 关于npm scripts 什么是npm scripts npm 允许在 ...
- iOS飘雪的动画小demo
ViewController.h #import <UIKit/UIKit.h> @interface ViewController : UIViewController{ UIImage ...
- poj 2836 Rectangular Covering
Rectangular Covering Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 2776 Accepted: 7 ...
- Codeforces 920E Connected Components? 补图连通块个数
题目链接 题意 对给定的一张图,求其补图的联通块个数及大小. 思路 参考 ww140142. 维护一个链表,里面存放未归入到任何一个连通块中的点,即有必要从其开始进行拓展的点. 对于每个这样的点,从它 ...
- 《手把手教你学C语言》学习笔记(4)---代码规范
编程过程中需要遵守编译器的各种约定,例如以下代码: 1 #include <stdio.h> 2 3 int main(int argc, char **argv) 4 { 5 print ...
- enum枚举类型
枚举类型的实例是常量,且它们都用大写字母表示. 简单枚举例子: public enum Spiciness { NOT, MILD, MEDIUM, HOT, FLAMING } public cla ...
- centos 7 安装golang1.12.5
本文主要介绍服务器端环境配置,开发环境是window的话可以参考 https://www.cnblogs.com/nickchou/p/10765743.html 方式一.用yum安装 1.用yum指 ...
- ScrollView嵌套ViewPager,ViewPager内容不显示问题
在ViewPager外面嵌套ScrollView时导致ViewPager 中内容不显示,解决的办法是在ScrollView标签下加入:android:fillViewport="true&q ...