linux服务器强制重启
Linux使用shutdown -r now 或者 reboot、init 6 命令无法重启时使用以下两条命令可强制重启:
echo 1 > /proc/sys/kernel/sysrq
echo b > /proc/sysrq-trigger
事件回顾,平安夜正在床上躺着刷剧,突然收到报警,一台k8s得node节点出现问题
立马开机登录阿里云vnc控制台查看服务器情况 输入任何命令报错都是
fork failed cannot allocate memory
出现了一个奇怪得现象k8s组件calico异常,服务器ssh也进不去. pod也没有飘逸到其他节点上,立马强制重启, 过了5分钟左右在VNC后台看服务器还是没有重启信号,立马强制重启一波,shutdown -r now 或者 reboot、init 6 命令无法都无法重启 拷贝命令进控制台
echo 1 > /proc/sys/kernel/sysrq
echo b > /proc/sysrq-trigger
服务器重启 各个服务也启动来了
查看服务器日志,查找报错原因,及分析,查看无特殊报错,修改内核参数观察
vi /etc/sysctl.d/99-sysctl.conf
kernel.pid_max = 1000000
vm.overcommit_memory = 1
sysctl -p
后记
1./proc/sys/kernel/sysrq
向 sysrq 文件中写入1是为了开启 SysRq 功能。根据 linux/Documentations/sysrq.txt 中所说:SysRq 代表的是 Magic System Request Key。开启了这个功能以后,只要内核没有挂掉,它就会响应你要求的任何操作。但是这需要内核支持(CONFIG_MAGIC_SYSRQ 选项)。向 /proc/sys/kernel/sysrq 中写入0是关闭 SysRq 功能,写入1是开启,其他选项请参考 sysrq.txt。
2./proc/sysrq-trigger
立即重新启动计算机:
echo "b" > /proc/sysrq-trigger
立即关闭计算机:
echo "o" > /proc/sysrq-trigger
导出内存信息:
echo "m" > /proc/sysrq-trigger
导出所有标志位和寄存器信息:
echo "p" > /proc/sysrq-trigger
导出线程状态信息:
echo "t" > /proc/sysrq-trigger
使系统崩溃:
echo "c" > /proc/sysrq-trigger
同步连接系统磁盘:
echo "s" > /proc/sysrq-trigger
重新挂载所有文件系统为只读:
echo "u" > /proc/sysrq-trigger
此外还有两个,类似于强制注销的功能:
‘e’ — 使用 SIGTERM 信号杀死除 init 进程外所有进程
‘i’ — 使用 SIGKILL 信号杀死除 init 进程外所有进程
文章作者 🐳Myki
上次更新 2020-12-24