一个按钮可以将所有进程设置为暂停 Linux?

fue*_*zig 2 linux process swapping

当 Linux 开始交换时,您基本上注定要失败。很快系统将不再对任何输入做出反应,但很高兴地切换到几天结束......

您能想出一个包含所有进程的命令,从而(并且同时)允许您打开一个干净的 shell,在那里您可以检查问题的根源并杀死占用所有内存的进程?(我想这并不容易,因为由于内存可能已完全填满,您需要换出更多内存以收集打开外壳的空间,另一方面,必须停止所有其他交换过程。)

如果您将这样的命令绑定到一个热键,那么也许您可以将其用作紧急按钮,从而为您节省很多时间。如果这可能的话,有什么想法吗?以前有人尝试过这样的事情吗?如果有人能意识到这一点,那将是一个很酷的功能:)

Mar*_*ter 6

其他答案中提到的Magic SysReq就是您所拥有的全部。如果您只有 SSH 访问权限,您可以像这样触发 SysReq:

# Enable Magic SysReq since most systems default this off
echo 1 > /proc/sys/kernel/sysrq
#call OOM Killer to try to free up memory
echo f > /proc/sysrq-trigger
Run Code Online (Sandbox Code Playgroud)

从中制作一个可执行脚本并在您注意到交换时立即执行它可能会给您一个机会。如果您有足够的内存来处理临时内存峰值,或者如果您可以在内存不足时终止随机程序,则禁用交换也是一种选择。

在相关说明中,如果您有一个负载急剧增加的远程系统并且您需要将其杀死,您可以使用它来强制重新启动而无需完全关闭:

echo 1 > /proc/sys/kernel/sysrq
#Trigger BIOS reset
echo b > /proc/sysrq-trigger
Run Code Online (Sandbox Code Playgroud)