如何在不重新启动机器的情况下关闭所有进程?

如何在不重新启动机器的情况下关闭所有进程?

我有很多进程正在运行,我需要将它们全部杀死。

在此输入图像描述

如何在不重新启动机器的情况下执行此操作?

答案1

更严肃一些,而不是激进一些'ing,您可以切换到维护模式(又名单用户):

# as root:
/sbin/init 1

您的系统将切换到运行级别1,致力于维护任务。 [几乎]所有进程都将[很好地]被终止,所有文件系统都将被卸载,交互式登录将定向到控制台(引导console参数)。

稍后返回多用户运行级别:

/sbin/init 3

或者,启用图形登录管理器:

/sbin/init 5

答案2

你不可以做这个。无论你做什么,都必须有最后一个进程运行。或者更确切地说,当你这样做,你会导致内核转储核心并出现恐慌。随后可能会立即重新启动 - 否则在重新启动机器之前什么也不会发生。

有内核空间,也有用户空间。用户空间从启动起就由 PID 1 - 支撑init。杀全部进程的主要目的是杀死用户空间,那么你会用计算机做什么呢?

当系统启动时,系统的固件或某些中间引导加载程序会执行内存中的内核。内核会进行一些健全性检查并查找init.如果它找到它并init执行任何有用的操作,最终您将能够使用您的计算机。如果没有,您将无法使用您的计算机。

在该引导周期的剩余生命周期中,内核为用户空间(即init的子空间)提供服务。把它们拿走,它就没有意义了。而且很可能惯于对此也感到高兴。

答案3

如果SysRq 魔法键在您的系统上启用,您可以按Alt+ Print Scrn/SysRq+E或执行

echo e > /proc/sysrq-trigger

将 SIGTERM 发送到除 init (PID 1) 之外的所有进程。

您还可以使用Alt+ Print Scrn/SysRq+I

echo i > /proc/sysrq-trigger

改为发送 SIGKILL。

答案4

如果您的发行版使用systemd,您可以切换到最小systemd目标:

systemctl isolate emergency.target

这将杀死几乎所有应用程序,将您的系统移至单用户 root 登录模式。之后你执行:

systemctl isolate graphical.target

您将被带回 X。这几乎将完成重新启动。

相关内容