使用 /proc/sysrq-trigger 进行系统调试和故障排除

前言

在 Linux 系统中,/proc/sysrq-trigger 是一个强大的工具,提供了一种与系统进行低级别交互的方法。本文将详细介绍 sysrq-trigger 的功能、使用方法及其在系统调试和故障排除中的应用。

什么是 /proc/sysrq-trigger?

/proc/sysrq-trigger 是 Linux 内核提供的一个接口,它允许用户通过写入特定命令来触发系统请求(SysRq)功能。SysRq 是内核级别的一个快捷键,通常用于系统恢复和调试任务。通过 sysrq-trigger,这些操作可以在没有物理键盘的情况下通过命令行实现。

配置 SysRq 功能

在使用 sysrq-trigger 之前,需要确保系统启用了 SysRq 功能。可以通过以下命令查看当前配置:

cat /proc/sys/kernel/sysrq

如果输出为 1,表示 SysRq 功能已启用。如果为 0,则需要启用它:

echo 1 | sudo tee /proc/sys/kernel/sysrq

为了在系统重启后保持设置,可以在 /etc/sysctl.conf 文件中添加以下行:

kernel.sysrq = 1

然后运行 sudo sysctl -p 使更改生效。

使用 /proc/sysrq-trigger

/proc/sysrq-trigger 通过写入特定字符来执行各种系统操作。以下是一些常用的命令:

重启系统: 写入 b

echo b | sudo tee /proc/sysrq-trigger

使系统崩溃,如果配置了crashdump,崩溃后会生成dump文件: 写入 c

echo c > /proc/sysrq-trigger

立即关闭系统: 写入 o

echo o | sudo tee /proc/sysrq-trigger

同步所有挂载的文件系统: 写入 s

echo s | sudo tee /proc/sysrq-trigger

将所有数据写入磁盘: 写入 u

echo u | sudo tee /proc/sysrq-trigger

显示当前的内存信息: 写入 m

echo m | sudo tee /proc/sysrq-trigger

终止所有进程,除了 init: 写入 e

echo e | sudo tee /proc/sysrq-trigger

杀死所有进程,除了 init: 写入 i

echo i | sudo tee /proc/sysrq-trigger

重新挂载所有文件系统为只读: 写入 r

echo r | sudo tee /proc/sysrq-trigger

实际应用场景

1. 系统挂起时进行恢复

在系统挂起或无响应时,可以使用 SysRq 命令来进行恢复。例如,可以使用 Alt + SysRq + r 解锁键盘,然后逐步使用 e 和 i 终止和杀死所有进程,最后使用 b 重启系统。

通过 /proc/sysrq-trigger,这些操作可以远程完成,尤其是在没有物理访问的情况下。例如:

echo r | sudo tee /proc/sysrq-trigger
echo e | sudo tee /proc/sysrq-trigger
echo i | sudo tee /proc/sysrq-trigger
echo b | sudo tee /proc/sysrq-trigger

2. 系统调试和信息获取

开发人员和系统管理员可以使用 m 命令获取内存信息,或使用 t 命令获取当前进程信息,这对诊断系统性能问题非常有帮助。

echo m | sudo tee /proc/sysrq-trigger
echo t | sudo tee /proc/sysrq-trigger

3. 安全关闭和重启系统

在某些紧急情况下,例如电源故障或硬件故障,确保文件系统数据完整性非常重要。可以通过以下步骤安全地重新挂载文件系统为只读,并重启系统:

echo s | sudo tee /proc/sysrq-trigger
echo u | sudo tee /proc/sysrq-trigger
echo b | sudo tee /proc/sysrq-trigger

注意事项

  • 风险性: SysRq 命令具有非常高的权限,误用可能导致数据丢失或系统崩溃。因此,使用时需谨慎,特别是在生产环境中。
  • 权限: 执行这些命令需要 root 权限。
  • 配置持久性: 如果需要在每次重启后保持 SysRq 功能启用,需要在 /etc/sysctl.conf 中进行配置。

总结

/proc/sysrq-trigger 是一个功能强大的工具,能够在关键时刻提供系统恢复和调试功能。通过适当的配置和使用,可以大大提高系统管理和故障排除的效率。希望这篇博客能够帮助你更好地理解和使用 sysrq-trigger,从而在需要时迅速采取有效的措施。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/768431.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CVD-Risk-Prevent 个性化心血管健康推荐系统:基于医学指南的规则框架与 LLM 的结合

CVD-Risk-Prevent 个性化心血管健康推荐系统:基于医学指南的规则框架与 LLM 的结合 提出背景推荐算法的选择选择疑问健康指标管理心血管风险因素目标设定实现目标的计划推荐的多维性 算法关键点:如何将心血管健康指标转换为多维推荐?确定风险…

antfu/ni 在 Windows 下的安装

问题 全局安装 ni 之后,第一次使用会有这个问题 解决 在 powershell 中输入 Remove-Item Alias:ni -Force -ErrorAction Ignore之后再次运行 ni Windows 11 下的 Powershell 环境配置 可以参考 https://github.com/antfu-collective/ni?tabreadme-ov-file#how …

【操作系统】进程管理——调度基础(个人笔记)

学习日期:2024.7.3 内容摘要:调度的概念、层次,进程调度的时机,调度器和闲逛进程,调度算法的评价指标 调度的基本概念 有一堆任务需要处理,但由于资源有限,有的事情不能同时处理,这…

Django学习第三天

python manage.py runserver 使用以上的命令启动项目 实现新建用户数据功能 views.py文件代码 from django.shortcuts import render, redirect from app01 import models# Create your views here. def depart_list(request):""" 部门列表 ""&qu…

什么牌子的充电宝最好耐用?多款热门无线磁吸充电宝推荐

在现代生活中,手机、平板等电子设备已成为我们日常工作的必需品,而充电宝则是这些设备的续航神器!无论是长途旅行、外出办公,还是日常通勤,一个耐用且高效的充电宝都是必不可少的选择。然而,市场上充电宝品…

如何选择适合自己的虚拟化技术?

虚拟化技术已成为现代数据中心和云计算环境的核心组成部分。本文将帮助您了解如何选择适合自己需求的虚拟化技术,以实现更高的效率、资源利用率和灵活性。 理解虚拟化技术 首先,让我们了解虚拟化技术的基本概念。虚拟化允许将一个物理服务器划分为多个虚…

探讨命令模式及其应用

目录 命令模式命令模式结构命令模式适用场景命令模式优缺点练手题目题目描述输入描述输出描述题解 命令模式 命令模式是一种行为设计模式, 它可将请求转换为一个包含与请求相关的所有信息的独立对象。 该转换让你能根据不同的请求将方法参数化、 延迟请求执行或将其…

玩玩快速冥(LeetCode50题与70题以及联系斐波那契)

一.算法快速幂 今天刷到两个题,比较有意思,还是记录一下. 先来讲讲50题. LeetCode50(Pow(x,n)) 实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。 这道题一看很平常啊,不就一直乘嘛,循环走一次就够了.但是很抱歉,单纯的想…

ArcTs布局入门04——相对布局 媒体查询

如果你也对鸿蒙开发感兴趣,加入“Harmony自习室”吧 扫描下面的二维码关注公众号。 本文将探讨相对布局与媒体查询,为啥把他们放到一起呢?主要是因为相对布局在响应式的场景下做得不太好,一般情况下和媒体查询(不同尺…

移动智能终端数据安全管理方案

随着信息技术的飞速发展,移动设备已成为企业日常运营不可或缺的工具。特别是随着智能手机和平板电脑等移动设备的普及,这些设备存储了大量的个人和敏感数据,如银行信息、电子邮件等。员工通过智能手机和平板电脑访问企业资源,提高…

zed_ros2_wapper colcon 报错

问题一: CMake Error at CMakeLists.txt:129 (find_package): By not providing “Findnmea_msgs.cmake” in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by “nmea_msgs”, but CMake did not find one. Co…

jdk17卸载后换jdk1.8遇到的问题

过程: 1、找到jdk17所在文件夹,将文件夹进行删除。(问题就源于此,因为没删干净) 2、正常下载jdk1.8,按照网上步骤配置环境变量,这里我参考的文章是: http://t.csdnimg.cn/Svblk …

乘用车副水箱浮球式液位计传感器

浮球式液位计概述 浮球式液位计是一种利用浮球在液体中浮动的原理来测量液位的设备,广泛应用于各种工业自动化控制系统中,如石油化工、水处理、食品饮料等行业。它通过浮球的上下运动来测量液位的高低,具有结构简单、安装方便、测量范围广、…

[Leetcode 136][Easy]-只出现一次的数字

目录 题目描述 具体思路 题目描述 原题链接 具体思路 ①首先看到数组中重复的数字,想到快慢指针,但是数组的元素是乱序的不好求。因此先对数组排序。使用了STL库的sort函数,时间复杂度O(nlogn)不符合题目要求,空间复杂度O(1)。…

大陆ARS548使用记录

一、Windows连接上位机 雷达是在深圳路达买的,商家给的资料中首先让配置网口,但我在使用过程中一直出现无法连接上位机的情况。接下来说说我的见解和理解。 1.1遇到的问题 按要求配置好端口后上位机无连接不到雷达,但wireshark可以正常抓到数…

ESP32-C3模组上跑通MQTT(6)—— tcp例程(1)

接前一篇文章:ESP32-C3模组上跑通MQTT(5) 《ESP32-C3 物联网工程开发实战》 一分钟了解MQTT协议 ESP32 MQTT API指南-CSDN博客 ESP-IDF MQTT 示例入门_mqtt outbox-CSDN博客 ESP32用自签CA进行MQTT的TLS双向认证通信_esp32 mqtt ssl-CSDN博客 特此致谢! 本回开始正式讲…

上海站圆满结束!MongoDB Developer Day深圳站,周六见!

在过去两个周六的北京和上海 我们见证了两站热情高涨的 MongoDB Developer Day! 近200位参会开发者相聚专业盛会 经过全天的动手实操和主题研讨会 MongoDB技能已是Next Level! 最后一站Developer Day即将启程 期待本周六与各位在深圳相见&#xff0…

线程池666666

1. 作用 线程池内部维护了多个工作线程,每个工作线程都会去任务队列中拿取任务并执行,当执行完一个任务后不是马上销毁,而是继续保留执行其它任务。显然,线程池提高了多线程的复用率,减少了创建和销毁线程的时间。 2…

创建kset

1、kset介绍 2、相关结构体和api介绍 2.1 struct kset 2.2 kset_create_and_add kset_create_and_addkset_createkset_registerkobject_add_internalkobject_add_internal2.3 kset_unregister kset_unregisterkobject_delkobject_put3、实验操作 #include<linux/module.…

代码随想录第42天|动态规划

198.打家劫舍 参考 dp[j] 表示偷盗的总金额, j 表示前 j 间房(包括j)的总偷盗金额初始化: dp[0] 一定要偷, dp[1] 则取房间0,1的最大值遍历顺序: 从小到大 class Solution { public:int rob(vector<int>& nums) {if (nums.size() < 2) {return nums[0];}vector&…