使用 /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.mzph.cn/diannao/40056.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【HICE】web服务器搭建4

自定义多个ip地址访问 1.下载httpd协议&#xff1a;dnf install httpd -y 2.编辑vhost.conf cd /etc/httpd cd /conf.d <directory /www> allowoverride none require all granted </directory> <virtualhost 192.168.244.130:80> documentroot /www s…

计算机视觉是什么,涉及的关键技术和应用领域

计算机视觉是一门技术&#xff0c;它是人工智能&#xff08;AI&#xff09;的一个重要分支&#xff0c;它使计算机能够从图像或视频中识别、处理和理解视觉信息。它的研究和应用涉及多个领域&#xff0c;包括工业自动化、安全监控、医疗诊断、交通管理等。计算机视觉的应用非常…

07 docker 容器存储持久化

目录 1. Docker Volumes 特点 示例 2. Bind Mounts 特点 示例 对比总结 3. tmpfs Mounts 4. Docker Storage Plugins 5. Kubernetes Persistent Volumes 6. Network Attached Storage (NAS) 和 Storage Area Network (SAN) 1. Docker Volumes 使用存储卷进行存储持久…

什么是 API 代理?

API 代理就像是您的计算机和互联网上特殊服务之间的中间人。它有点像集翻译、保安和信使于一体。 什么是 API 代理&#xff1f; API 代理就像是您和在线服务之间的中间人。当您的计算机需要从某个特殊的在线服务 (API) 获得某些东西时&#xff0c;API 代理会确保一切顺利进行…

Eslint与Prettier搭配使用

目录 前置准备 Eslint配置 Prettier配置 解决冲突 前置准备 首先需要安装对应的插件 然后配置settings.json 点开之后就会进入settings.json文件里&#xff0c;加上这两个配置 // 保存的时候自动格式化 "editor.formatOnSave": true, // 保存的时候使用prettier进…

1.2 ROS2安装

1.2.1 安装ROS2 整体而言&#xff0c;ROS2的安装步骤不算复杂&#xff0c;大致步骤如下&#xff1a; 准备1&#xff1a;设置语言环境&#xff1b;准备2&#xff1a;启动Ubuntu universe存储库&#xff1b;设置软件源&#xff1b;安装ROS2&#xff1b;配置环境。 请注意&…

拓扑学习系列(2)同调群、同伦群与基本群

同调群 同调群是拓扑空间的一个重要不变量&#xff0c;用于研究空间的“洞”的结构。同调群描述了拓扑空间中的闭合曲线、曲面等的性质&#xff0c;是拓扑学中的一个重要工具。以下是对同调群的详细描述&#xff1a; 定义&#xff1a; 给定一个拓扑空间 X&#xff0c;对于每个…

【分布式系统】监控平台Zabbix对接grafana

以前两篇博客为基础 【分布式系统】监控平台Zabbix介绍与部署&#xff08;命令截图版&#xff09;-CSDN博客 【分布式系统】监控平台Zabbix自定义模版配置-CSDN博客 一.安装grafana并启动 添加一台服务器192.168.80.104 初始化操作 systemctl disable --now firewalld set…

LeetCode 算法:路径总和 III c++

原题链接&#x1f517;&#xff1a;路径总和 III 难度&#xff1a;中等⭐️⭐️ 题目 给定一个二叉树的根节点 root &#xff0c;和一个整数 targetSum &#xff0c;求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始&#xff0c;也不需要在叶…

操作系统调度算法、页面置换算法总结

常见的进程调度算法 FCFS:非抢占、先来先服务。 对短进程不利。 优先级调度算法:在支持抢占的系统中,当新进程进入就绪队列时,如果它的优先级高于当前运行进程的优先级,那么就会抢占CPU;在非抢占系统中,只是将新进程加入了就绪队列中。 最短作业优先调度算法(SJF) …

去中心化经济的革新:探索Web3的新商业模式

随着区块链技术的发展&#xff0c;Web3正逐渐成为全球经济和商业模式的关键词之一。Web3不仅仅是技术的革新&#xff0c;更是对传统中心化商业模式的挑战和重构。本文将深入探讨Web3背后的概念、关键技术以及其带来的新商业模式&#xff0c;带领读者走进这一新兴领域的深度分析…

272. 最长公共上升子序列

Powered by:NEFU AB-IN Link 文章目录 272. 最长公共上升子序列题意思路代码 272. 最长公共上升子序列 题意 如题 思路 若按这个思路的话&#xff0c;代码为 O ( n 3 ) O(n^3) O(n3) for (int i 1; i < n; i ) {for (int j 1; j < n; j ){f[i][j] f[i - 1][j];…

SpringSecurity中文文档(Servlet Password Storage)

存储机制&#xff08;Storage Mechanisms&#xff09; 每种支持的读取用户名和密码的机制都可以使用任何支持的存储机制&#xff1a; Simple Storage with In-Memory AuthenticationRelational Databases with JDBC AuthenticationCustom data stores with UserDetailsServic…

Cube大小与性能的博弈:Kylin查询性能优化指南

Cube大小与性能的博弈&#xff1a;Kylin查询性能优化指南 在Apache Kylin的多维数据分析世界中&#xff0c;Cube是核心组件&#xff0c;它直接影响查询性能和系统资源的使用。理解Cube大小与查询性能之间的关系对于构建高效的数据分析平台至关重要。本文将深入探讨Kylin中Cube…

FW SystemUI Keyguard解析(二)

文章目录 CTS之Keyguard Menu事件处理 CTS之Keyguard Menu事件处理 事件触发点: NotificationShadeWindowViewController.dispatchKeyEvent 设置setInteractionEventHandler回调之后通过NotificationShadeWindowView 触发 调用到return mService.onMenuPressed(); public cla…

31-Pandas index操作索引

Pandas index操作索引 索引&#xff08;index&#xff09;是 Pandas 的重要工具&#xff0c;通过索引可以从 DataFame 中选择特定的行数和列数&#xff0c;这种选择数据的方式称为“子集选择”。 在 Pandas 中&#xff0c;索引值也被称为标签&#xff08;label&#xff09;&a…

简单的text/html无法解析解决记录

简单的text/html无法解析解决记录 1. bug发现 我们所有的服务都是微服务&#xff0c;服务间调用都是使用feign接口进行调用&#xff0c;正常调用都没有问题&#xff0c;但是某一天发现部分从esb服务调用过来到我们本地的服务&#xff0c;本地服务再使用feign接口调用其他微服…

DPO算法推导

DPO 核心思想&#xff1a;直接使用偏好数据进行策略优化&#xff0c;省去 reward 模型策略优化。 技术背景知识&#xff1a; 首先给定prompt x&#xff0c;生成两个答案 ( y 1 , y 2 ) Π S F T ( y ∣ x ) (y_1,y_2)~\Pi^{SFT}(y|x) (y1​,y2​) ΠSFT(y∣x) &#xff0c;并通…

2. Python+Playwright playwright的API

Playwright支持同步和异步两种API&#xff0c;使用异步API需要导入asyncio库&#xff0c;它是一个可以用来实现Python协程的库&#xff0c;更详细介绍可参考Python协程 。我们可以根据自己的偏好选择适合的模式。 同步与异步模式原理 同步操作方式&#xff1a;在代码执行时&am…

c++的const

const在C中是一个非常重要的关键字&#xff0c;用于定义不可变的变量、函数参数、成员函数等。它可以提高代码的可读性、安全性&#xff0c;并帮助编译器进行优化。 定义常量 使用const定义不可变的变量&#xff1a; const int MAX_SIZE 100;常量指针 指向常量的指针和常量…