如何使正在运行的应用程序休眠?

如何使正在运行的应用程序休眠?

用例示例:

我运行 Chromium 时打开了几个选项卡,然后决定接下来的 20 分钟内不需要访问该应用程序。为了节省笔记本电脑的电池使用时间,我想休眠(冻结)Chromium 而不关闭该应用程序(重新打开并重新加载所有选项卡需要时间,我想通过休眠来节省这些时间)。

答案1

您可以使用该killall命令向所有与给定名称匹配的进程发送SIGSTOP信号以冻结它们,然后以SIGCONT相同的方式发送以再次解冻它们。

首先使用以下命令找出进程名称pgrep -l SEARCH_PATTERN

$ pgrep -l chrom
13010 chromium-browse
13036 chromium-browse
13038 chromium-browse
13153 chromium-browse
13166 chromium-browse
13169 chromium-browse
13175 chromium-browse
13187 chromium-browse
13195 chromium-browse
13206 chromium-browse

请注意,它会截断较长的名称,因此会r丢失。但这不是问题,因为您可以使用Tab补全功能输入进程名称,它会自动补全。

SIGSTOP然后向所有进程发送信号,名字chromium-browser如下:

$ killall -s STOP chromium-browser 

Chromium 窗口会变灰,好像它没有响应一样。好吧,它确实没有响应了,所以这是意料之中的。现在您无法以任何方式与窗口交互(菜单栏和最小化等除外,这些操作由窗口管理器而不是应用程序本身处理)。但是,单击按钮等事件仍会生成并添加到应用程序的事件队列中,因此当您再次解冻应用程序时,它们将全部被处理!

只需运行此命令SIGCONT向指定进程发送信号即可再次解冻应用程序:

$ killall -s CONT chromium-browser 

有时以这种方式冻结应用程序可能会导致其崩溃,因此请确保在冻结应用程序之前保存了重要内容。

在极少数情况下,甚至桌面环境/窗口管理器/其他程序也可能变得无响应。在这种情况下,您必须通过 TTY 解冻冻结的应用程序:

Ctrl+ Alt+F1切换到 TTY1。系统会要求您登录,因此请输入您的用户名和密码。然后运行命令以解冻应用程序,就像通​​过普通终端仿真器运行它一样。之后使用Ctrl+ Alt+切换回桌面 (TTY7) F7,您应该会再次一切正常。

答案2

要暂停,请尝试: killall -SIGTSTP chromium-browser

如果这不起作用,请尝试强制版本:killall -SIGSTOP chromium-browser

无论如何,要继续使用killall -SIGCONT chromium-browser。我尝试使用 Firefox,它成功了。但请注意,如果您在 Chromium 暂停时单击其中的按钮,它将在您继续执行时执行这些内容。

答案3

您可以尝试以下操作(在终端中):

ps aux | grep gedit

然后你会看到类似这样的内容:

barend    7166  5.3  1.0 722620 39044 ?        Sl   16:19   0:00 gedit

写下数字 7166(或任何数字),然后执行以下操作:

kill -STOP 7166

这将暂停进程的执行。它不会立即释放其使用的内存,但如果其他进程需要,这些内存将可供使用。

然后做

kill -CONT 7166再次使用该程序。

请注意,您必须在适当的地方更改 7166。

相关内容