実行中のアプリケーションを休止状態にするにはどうすればよいですか?


15

ユースケースの例:

いくつかのタブを開いてChromiumを実行し、次の20分間はアプリケーションにアクセスする必要がないと判断しました。ノートパソコンのバッテリー時間を節約するために、アプリケーションを閉じずにChromiumを休止状態(フリーズ)にしたいと思います(すべてのタブを再度開いて再ロードするには、休止状態にすることで節約したい時間が必要です)。


1
ここで2番目の回答を確認してください:stackoverflow.com/questions/2134771/…。クロムは多くのPIDを使用しており、それらを開くたびに異なりますが、メインのPID(プロセスマネージャーに元のアイコンが付いているもの)を停止することはうまく機能しているようです。
-GreggD

1
Chromiumのみに関心があり、他のアプリケーションには関心がない場合は、OneTabSession Buddyなどのタブ管理用に設計されたChromium拡張機能を使用できます。
モシェ・カッツ

ありがとうございますが、killall実際に解決策は本当にエレガントだと思います。:)
orschiro

回答:


21

この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+ F7を使用してデスクトップ(TTY7)に戻ると、再び元気になります。


4
で始めたのでpgrep、続けることができましたpkill
muru

1
アプリケーションがクラッシュするリスクはSIGSTOP存在しますが、それは軽微だと思います。Chromiumでよく使用しましたが、これがクラッシュの理由であることを思い出せません。
カスペルド

新しいsmtgを学んだ! killall;-)
ファビー

8

一時停止するには、次を試してください。 killall -SIGTSTP chromium-browser

これが機能しない場合は、強制バージョンを試してください:killall -SIGSTOP chromium-browser

いずれにしても、使用を継続するにはkillall -SIGCONT chromium-browser。Firefoxで試してみたところ、うまくいきました。ただし、一時停止中にChromiumのボタンをクリックすると、実行を続行するとその機能が実行されることに注意してください。


3
SIGSTOP / SIGCONTは私には機能しますが、chromium-browserプロセス名として入力するだけです。+1
GreggD

1
それともgoogle-chromeあなたは、Google Chromeを使用している場合、その差は明らかに混乱しているので

2

以下を試すことができます(ターミナルで):

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を変更する必要があることに注意してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.