用例示例:
我在运行Chromium的同时打开了两个标签,并决定在接下来的20分钟内不需要访问该应用程序。为了节省笔记本电脑的电池时间,我想休眠(冻结)Chromium,而不必关闭应用程序(重新打开并重新加载所有选项卡需要我想通过休眠来节省时间)。
killall
解决方案实际上非常优雅。:)
用例示例:
我在运行Chromium的同时打开了两个标签,并决定在接下来的20分钟内不需要访问该应用程序。为了节省笔记本电脑的电池时间,我想休眠(冻结)Chromium,而不必关闭应用程序(重新打开并重新加载所有选项卡需要我想通过休眠来节省时间)。
killall
解决方案实际上非常优雅。:)
Answers:
您可以使用该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,您应该会再好的一次。
pgrep
,您可能会继续pkill
SIGSTOP
存在应用程序崩溃的风险,但我认为这是次要的。我经常在Chromium上使用它,而且我不记得曾经是崩溃的原因。
killall
! ;-)
要暂停,请尝试:
killall -SIGTSTP chromium-browser
如果这不起作用,请尝试使用强制版本:killall -SIGSTOP chromium-browser
。
无论哪种方式,都可以继续使用killall -SIGCONT chromium-browser
。我尝试使用Firefox并成功。但是请注意,如果您在Chromium处于暂停状态时单击按钮,它将在您继续执行后执行该任务。
chromium-browser
作为进程名称即可。+1
google-chrome
如果你使用谷歌Chrome,因为差异显然是混淆